sparkforensics-server 0.4.0 → 0.5.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/index.js +3 -0
- package/package.json +1 -1
- package/public/assets/AutoscalingChurn-9Zo6IMGS.js +1 -0
- package/public/assets/CacheUtilization-MBDfMsKC.js +1 -0
- package/public/assets/CachingOpportunity-Cfw3wAFa.js +1 -0
- package/public/assets/ColdStart-BtS12b6_.js +1 -0
- package/public/assets/ConfigAudit-DNPV6EQg.js +1 -0
- package/public/assets/CoreUsageArea-BObEeenE.js +1 -0
- package/public/assets/Dashboard-CC_BXrNy.js +2 -0
- package/public/assets/DisclosureContext-Ds0hcZFn.js +1 -0
- package/public/assets/DuplicatePlanSubtree-vN3zqRsi.js +1 -0
- package/public/assets/ExecutorUtilization-CZObSLIj.js +1 -0
- package/public/assets/GcPressure-ByJlLOua.js +1 -0
- package/public/assets/IncompleteRun-MzqV4W8y.js +1 -0
- package/public/assets/JobFailures-LbMvAwAb.js +1 -0
- package/public/assets/MemoryUtilization-DH4jYvJK.js +1 -0
- package/public/assets/OverBroadcast-euk6HKg4.js +1 -0
- package/public/assets/PartitionHint-DThaMMRT.js +1 -0
- package/public/assets/PartitionSizing-yIN-iZzx.js +1 -0
- package/public/assets/{PlanExplorer-DdmPkKO1.js → PlanExplorer-Dd9WPK4S.js} +1 -1
- package/public/assets/PlanGraphRoute-NV5mCXRm.js +1 -0
- package/public/assets/RetryWaste-CXH4D-xH.js +1 -0
- package/public/assets/ShuffleIO-CW7U68ph.js +1 -0
- package/public/assets/Skew-PL79TppX.js +1 -0
- package/public/assets/SlowHost-GBO73hCi.js +1 -0
- package/public/assets/SmallFiles-B5cUjEav.js +1 -0
- package/public/assets/SpeculationWaste-mxi3jgb0.js +1 -0
- package/public/assets/Spill-CH1bNpxL.js +1 -0
- package/public/assets/StageFailed-YvxC11ii.js +1 -0
- package/public/assets/StageFindingGroup-B1A0nf-e.js +1 -0
- package/public/assets/{StageHeader-BSV8ALhT.js → StageHeader-BMNmUy-s.js} +1 -1
- package/public/assets/StageShape-DO3mQ6NS.js +1 -0
- package/public/assets/StageSlowness-SwRxfAEx.js +1 -0
- package/public/assets/Straggler-DHLTiBY-.js +1 -0
- package/public/assets/TaskFailures-Bj0QxiOc.js +1 -0
- package/public/assets/{TinyTask-CIPRxWfT.js → TinyTask-COUQQ5bQ.js} +1 -1
- package/public/assets/UnderBroadcast-RAUbQ6vw.js +1 -0
- package/public/assets/{finding-anchor-DF1cSHO1.js → finding-anchor-Dl8mIHiU.js} +1 -1
- package/public/assets/{impact-sort-7z0ZcBZf.js → impact-sort-Eihua9dY.js} +1 -1
- package/public/assets/index-DaC8A2FS.js +13 -0
- package/public/assets/{parser-worker-Q5KCPdKT.js → parser-worker-CfDvPkwF.js} +5 -5
- package/public/assets/{select-Cy5pmbrh.js → select-DkjFHlXR.js} +1 -1
- package/public/assets/{usePagedRows-BjPOpUU8.js → usePagedRows-Bo-aSztx.js} +1 -1
- package/public/assets/useRecentFiles-Bb4-ukVz.js +11 -0
- package/public/assets/{useSortMode-CU0vzThu.js → useSortMode-lDedD5a3.js} +1 -1
- package/public/docs/404.html +4 -3
- package/public/docs/assets/{app.C6w47a9W.js → app.yjczoibf.js} +1 -1
- package/public/docs/assets/chunks/@localSearchIndexroot.r9imX8Aq.js +1 -0
- package/public/docs/assets/chunks/{VPLocalSearchBox.BcTNvT55.js → VPLocalSearchBox.DOBbPfix.js} +1 -1
- package/public/docs/assets/chunks/{theme.D-mE6j02.js → theme.DFcAl8Ws.js} +2 -2
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.D0Kkk_r5.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.D0Kkk_r5.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_detector-contract.md.caA46z-u.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_drill-down.md.CdtlKHl-.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_drill-down.md.CFNCE8JB.lean.js → contributor-guide_architecture_drill-down.md.CdtlKHl-.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.BNp14LtL.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.BNp14LtL.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_index.md.B9yZieYL.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_index.md.3TO9ic6w.lean.js → contributor-guide_architecture_index.md.B9yZieYL.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_overview.md.DBGo-bwn.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_overview.md.DBGo-bwn.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_state-and-history.md.w4lwybdh.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_state-and-history.md.DOTVHjTV.lean.js → contributor-guide_architecture_state-and-history.md.w4lwybdh.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.CcvqxnZI.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_widget-rendering.md.BmpARZve.lean.js → contributor-guide_architecture_widget-rendering.md.CcvqxnZI.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.CKeFttKj.js +6 -0
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol.md.21pTYhFF.lean.js → contributor-guide_architecture_worker-protocol.md.CKeFttKj.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_contributing.md.CQMvGwFt.js +1 -0
- package/public/docs/assets/{contributor-guide_contributing.md.B2E9ni79.lean.js → contributor-guide_contributing.md.CQMvGwFt.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_development-setup.md.D9bu4j_c.js +15 -0
- package/public/docs/assets/contributor-guide_development-setup.md.D9bu4j_c.lean.js +1 -0
- package/public/docs/assets/contributor-guide_testing.md.By6XGR9a.js +1 -0
- package/public/docs/assets/{contributor-guide_testing.md.DTwhpoN2.lean.js → contributor-guide_testing.md.By6XGR9a.lean.js} +1 -1
- package/public/docs/assets/{style.DSixAiZE.css → style.tmDhD3c8.css} +1 -1
- package/public/docs/assets/user-guide_alternative-log-retrieval.md.z-8npxNk.js +7 -0
- package/public/docs/assets/user-guide_alternative-log-retrieval.md.z-8npxNk.lean.js +1 -0
- package/public/docs/assets/user-guide_getting-started.md.BJW5oVhe.js +24 -0
- package/public/docs/assets/user-guide_getting-started.md.BJW5oVhe.lean.js +1 -0
- package/public/docs/assets/{user-guide_mcp-tools.md.dQwIvdTF.js → user-guide_mcp-tools.md.DcLiOa9t.js} +40 -23
- package/public/docs/assets/{user-guide_mcp-tools.md.dQwIvdTF.lean.js → user-guide_mcp-tools.md.DcLiOa9t.lean.js} +1 -1
- package/public/docs/assets/user-guide_run-comparison.md.qin0a4IX.js +1 -0
- package/public/docs/assets/{user-guide_run-comparison.md.ChLI3MK0.lean.js → user-guide_run-comparison.md.qin0a4IX.lean.js} +1 -1
- package/public/docs/assets/user-guide_understanding-findings.md.DzReyCXb.js +1 -0
- package/public/docs/contributor-guide/architecture/board-widgets.html +7 -6
- package/public/docs/contributor-guide/architecture/detector-contract.html +7 -6
- package/public/docs/contributor-guide/architecture/drill-down.html +7 -6
- package/public/docs/contributor-guide/architecture/impact-estimation.html +7 -6
- package/public/docs/contributor-guide/architecture/index.html +7 -6
- package/public/docs/contributor-guide/architecture/overview.html +7 -6
- package/public/docs/contributor-guide/architecture/state-and-history.html +7 -6
- package/public/docs/contributor-guide/architecture/widget-rendering.html +7 -6
- package/public/docs/contributor-guide/architecture/worker-protocol.html +10 -9
- package/public/docs/contributor-guide/contributing.html +7 -6
- package/public/docs/contributor-guide/development-setup.html +11 -10
- package/public/docs/contributor-guide/testing.html +7 -6
- package/public/docs/hashmap.json +1 -1
- package/public/docs/index.html +5 -4
- package/public/docs/tuning-reference/anti-patterns.html +5 -4
- package/public/docs/tuning-reference/aqe.html +5 -4
- package/public/docs/tuning-reference/bottleneck-broadcast-sizing.html +5 -4
- package/public/docs/tuning-reference/bottleneck-cold-start.html +5 -4
- package/public/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +5 -4
- package/public/docs/tuning-reference/bottleneck-failures.html +5 -4
- package/public/docs/tuning-reference/bottleneck-gc.html +5 -4
- package/public/docs/tuning-reference/bottleneck-job-failure-rate.html +5 -4
- package/public/docs/tuning-reference/bottleneck-memory-utilization.html +5 -4
- package/public/docs/tuning-reference/bottleneck-retry-waste.html +5 -4
- package/public/docs/tuning-reference/bottleneck-shuffle.html +5 -4
- package/public/docs/tuning-reference/bottleneck-skew.html +5 -4
- package/public/docs/tuning-reference/bottleneck-slow-host.html +5 -4
- package/public/docs/tuning-reference/bottleneck-small-files.html +5 -4
- package/public/docs/tuning-reference/bottleneck-spill.html +5 -4
- package/public/docs/tuning-reference/bottleneck-straggler.html +5 -4
- package/public/docs/tuning-reference/bottleneck-tiny-tasks.html +5 -4
- package/public/docs/tuning-reference/bottleneck-utilization.html +5 -4
- package/public/docs/tuning-reference/caching.html +5 -4
- package/public/docs/tuning-reference/cluster-config.html +5 -4
- package/public/docs/tuning-reference/config.html +5 -4
- package/public/docs/tuning-reference/data-formats.html +5 -4
- package/public/docs/tuning-reference/index.html +5 -4
- package/public/docs/tuning-reference/intro.html +5 -4
- package/public/docs/tuning-reference/joins.html +5 -4
- package/public/docs/tuning-reference/memory-model.html +5 -4
- package/public/docs/tuning-reference/metrics.html +5 -4
- package/public/docs/tuning-reference/partitioning.html +5 -4
- package/public/docs/tuning-reference/pyspark.html +5 -4
- package/public/docs/tuning-reference/shuffle.html +5 -4
- package/public/docs/tuning-reference/spark-architecture.html +5 -4
- package/public/docs/tuning-reference/table-formats.html +5 -4
- package/public/docs/user-guide/alternative-log-retrieval.html +14 -7
- package/public/docs/user-guide/getting-started.html +27 -8
- package/public/docs/user-guide/mcp-tools.html +46 -28
- package/public/docs/user-guide/run-comparison.html +7 -6
- package/public/docs/user-guide/understanding-findings.html +7 -6
- package/public/export-template.html +44 -44
- package/public/index.html +2 -2
- package/vendor-core/allocation.js +106 -0
- package/vendor-core/analyzer.js +13 -13
- package/vendor-core/cli/budgets.js +23 -9
- package/vendor-core/cli/collect-run.js +11 -4
- package/vendor-core/cli/regression-budgets.js +83 -0
- package/vendor-core/comparison-verdict.js +22 -22
- package/vendor-core/core-source-hash.txt +1 -1
- package/vendor-core/detectors.js +202 -68
- package/vendor-core/docs-content/detection/cache.md +3 -2
- package/vendor-core/docs-content/detection/cfg.md +9 -8
- package/vendor-core/docs-content/detection/chrn.md +1 -2
- package/vendor-core/docs-content/detection/cold.md +4 -2
- package/vendor-core/docs-content/detection/fail.md +3 -2
- package/vendor-core/docs-content/detection/gc.md +3 -2
- package/vendor-core/docs-content/detection/host.md +2 -1
- package/vendor-core/docs-content/detection/local.md +1 -1
- package/vendor-core/docs-content/detection/mem.md +5 -2
- package/vendor-core/docs-content/detection/plan.md +2 -1
- package/vendor-core/docs-content/detection/sfail.md +2 -1
- package/vendor-core/docs-content/detection/shape.md +5 -4
- package/vendor-core/docs-content/detection/skew.md +3 -1
- package/vendor-core/docs-content/detection/slow.md +2 -2
- package/vendor-core/docs-content/detection/spec.md +2 -3
- package/vendor-core/docs-content/detection/spill.md +1 -1
- package/vendor-core/docs-site-config.js +1 -1
- package/vendor-core/effective-conf.js +107 -0
- package/vendor-core/efficiency-model.js +8 -6
- package/vendor-core/event-handlers.js +160 -47
- package/vendor-core/event-schemas.js +2 -0
- package/vendor-core/evidence-report.js +18 -10
- package/vendor-core/finding-generic-recommendation.js +20 -1
- package/vendor-core/finding-names.js +7 -0
- package/vendor-core/finding-presentation.js +61 -26
- package/vendor-core/finding-tag-help.js +1 -1
- package/vendor-core/finding-types.js +12 -0
- package/vendor-core/format-utils.js +4 -3
- package/vendor-core/impact-estimator.js +20 -2
- package/vendor-core/impact-format.js +14 -13
- package/vendor-core/impact-model.js +27 -5
- package/vendor-core/ingest.js +4 -2
- package/vendor-core/list-runs.js +5 -2
- package/vendor-core/mcp-tools.js +1 -1
- package/vendor-core/model-assembler.js +23 -1
- package/vendor-core/parser-worker.js +1 -1
- package/vendor-core/proxy.js +3 -1
- package/vendor-core/python-stage.js +25 -0
- package/vendor-core/recommendation-rollup.js +16 -9
- package/vendor-core/redact.js +51 -10
- package/vendor-core/remediation.js +20 -0
- package/vendor-core/run-comparison.js +43 -24
- package/vendor-core/run-interpretation.js +2 -1
- package/vendor-core/run-metrics.js +198 -0
- package/vendor-core/run-totals.js +24 -0
- package/vendor-core/run-verdict.js +3 -4
- package/vendor-core/scorecard-estimates.js +1 -0
- package/vendor-core/session-snapshot.js +7 -0
- package/vendor-core/shs-schemas.js +2 -2
- package/vendor-core/spark-memory.js +17 -0
- package/vendor-core/stage-plan-nodes.js +18 -0
- package/vendor-core/stage-quantiles.js +4 -0
- package/vendor-core/types.js +49 -1
- package/vendor-core/wasted-core-hours.js +10 -7
- package/vendor-core/write-targets.js +312 -0
- package/public/assets/AutoscalingChurn-CUSIvvab.js +0 -1
- package/public/assets/CacheUtilization-Ce0K6_X2.js +0 -1
- package/public/assets/CachingOpportunity-Cn-LmRA4.js +0 -1
- package/public/assets/ColdStart-BoiYzEyV.js +0 -1
- package/public/assets/ConfigAudit-BoJc6PAw.js +0 -1
- package/public/assets/CoreUsageArea-BFfXKu7K.js +0 -1
- package/public/assets/Dashboard-Bo_1jGqH.js +0 -2
- package/public/assets/DisclosureContext-LYzHroHO.js +0 -1
- package/public/assets/DuplicatePlanSubtree-BaAuGAoo.js +0 -1
- package/public/assets/ExecutorUtilization-OE6VMFkG.js +0 -1
- package/public/assets/GcPressure-AoL_ZNrV.js +0 -1
- package/public/assets/IncompleteRun-Bv6IzgsQ.js +0 -1
- package/public/assets/JobFailures-DF3U2z1f.js +0 -1
- package/public/assets/MemoryUtilization-B65OVZlq.js +0 -1
- package/public/assets/OverBroadcast-DXbJREDl.js +0 -1
- package/public/assets/PartitionSizing-DZLnjy0d.js +0 -1
- package/public/assets/PlanGraphRoute-C-BGmC6j.js +0 -1
- package/public/assets/RetryWaste-BbEPsdMw.js +0 -1
- package/public/assets/ShuffleIO-wZB94LS8.js +0 -1
- package/public/assets/Skew-SpQE7zeJ.js +0 -1
- package/public/assets/SlowHost-DwDBCTvr.js +0 -1
- package/public/assets/SmallFiles-yjY_6sT1.js +0 -1
- package/public/assets/SpeculationWaste-73PDmj0c.js +0 -1
- package/public/assets/Spill-DEw0Kd1i.js +0 -1
- package/public/assets/StageFailed-BEfXdEJc.js +0 -1
- package/public/assets/StageFindingGroup-Bzm2TY03.js +0 -1
- package/public/assets/StageShape-CzR4jHOt.js +0 -1
- package/public/assets/StageSlowness-vMPsnAaa.js +0 -1
- package/public/assets/Straggler-Cf__OGl5.js +0 -1
- package/public/assets/TaskFailures-BZ8kLZiO.js +0 -1
- package/public/assets/UnderBroadcast-CBm8ZPoS.js +0 -1
- package/public/assets/index-CEM9bz_x.js +0 -13
- package/public/assets/useRecentFiles-BrBl-AP1.js +0 -11
- package/public/docs/assets/chunks/@localSearchIndexroot.DbZy5EtM.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.VTcYTH4d.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.VTcYTH4d.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract.md.CsqZHz_T.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_drill-down.md.CFNCE8JB.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.HT9IJGIl.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.HT9IJGIl.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_index.md.3TO9ic6w.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_overview.md.CTEqVeV4.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_overview.md.CTEqVeV4.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_state-and-history.md.DOTVHjTV.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.BmpARZve.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.21pTYhFF.js +0 -6
- package/public/docs/assets/contributor-guide_contributing.md.B2E9ni79.js +0 -1
- package/public/docs/assets/contributor-guide_development-setup.md.CjgZJwjK.js +0 -15
- package/public/docs/assets/contributor-guide_development-setup.md.CjgZJwjK.lean.js +0 -1
- package/public/docs/assets/contributor-guide_testing.md.DTwhpoN2.js +0 -1
- package/public/docs/assets/user-guide_alternative-log-retrieval.md.ZHPSbBkF.js +0 -1
- package/public/docs/assets/user-guide_alternative-log-retrieval.md.ZHPSbBkF.lean.js +0 -1
- package/public/docs/assets/user-guide_getting-started.md.CEa2ZX-l.js +0 -6
- package/public/docs/assets/user-guide_getting-started.md.CEa2ZX-l.lean.js +0 -1
- package/public/docs/assets/user-guide_run-comparison.md.ChLI3MK0.js +0 -1
- package/public/docs/assets/user-guide_understanding-findings.md.D1ccs60C.js +0 -1
- /package/public/docs/assets/{contributor-guide_architecture_detector-contract.md.CsqZHz_T.lean.js → contributor-guide_architecture_detector-contract.md.caA46z-u.lean.js} +0 -0
- /package/public/docs/assets/{user-guide_understanding-findings.md.D1ccs60C.lean.js → user-guide_understanding-findings.md.DzReyCXb.lean.js} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Skew-SpQE7zeJ.js","./rolldown-runtime-hePW80VL.js","./charts-vendor-0VMaLVLN.js","./DisclosureContext-LYzHroHO.js","./react-vendor-BAKt3vny.js","./plan-graph-vendor-B0sEms9Z.js","./plan-graph-vendor-DLioOiRN.css","./StageFindingGroup-Bzm2TY03.js","./useRecentFiles-BrBl-AP1.js","./index-CEM9bz_x.js","./index-BcqTLKFp.css","./impact-sort-7z0ZcBZf.js","./finding-anchor-DF1cSHO1.js","./usePagedRows-BjPOpUU8.js","./useSortMode-CU0vzThu.js","./StageHeader-BSV8ALhT.js","./PlanExplorer-DdmPkKO1.js","./StageShape-CzR4jHOt.js","./TinyTask-CIPRxWfT.js","./ShuffleIO-wZB94LS8.js","./select-Cy5pmbrh.js","./PartitionSizing-DZLnjy0d.js","./Spill-DEw0Kd1i.js","./GcPressure-AoL_ZNrV.js","./StageFailed-BEfXdEJc.js","./TaskFailures-BZ8kLZiO.js","./RetryWaste-BbEPsdMw.js","./SlowHost-DwDBCTvr.js","./StageSlowness-vMPsnAaa.js","./Straggler-Cf__OGl5.js","./SpeculationWaste-73PDmj0c.js","./ColdStart-BoiYzEyV.js","./MemoryUtilization-B65OVZlq.js","./ExecutorUtilization-OE6VMFkG.js","./CachingOpportunity-Cn-LmRA4.js","./JobFailures-DF3U2z1f.js","./ConfigAudit-BoJc6PAw.js","./DuplicatePlanSubtree-BaAuGAoo.js","./SmallFiles-yjY_6sT1.js","./UnderBroadcast-CBm8ZPoS.js","./OverBroadcast-DXbJREDl.js","./CacheUtilization-Ce0K6_X2.js","./CoreUsageArea-BFfXKu7K.js","./AutoscalingChurn-CUSIvvab.js","./IncompleteRun-Bv6IzgsQ.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{D as t,M as n,O as r,T as i,_ as a,a as o,d as s,f as c,i as l,l as u,n as d,o as f,p,s as m,u as h,v as g}from"./charts-vendor-0VMaLVLN.js";import{A as _,D as v,E as y,M as b,O as x,P as S,j as C,k as ee}from"./react-vendor-BAKt3vny.js";import{B as te,E as w,H as ne,K as T,O as re,P as E,R as ie,S as D,T as O,V as ae,W as k,X as oe,_ as se,at as ce,b as A,d as j,dt as le,et as ue,ft as de,g as fe,h as pe,it as me,j as he,l as ge,lt as _e,m as ve,mt as M,o as ye,p as N,pt as P,s as be,st as xe,u as Se,ut as Ce,v as we,vt as Te,x as Ee,y as De,yt as F}from"./DisclosureContext-LYzHroHO.js";import{p as Oe}from"./plan-graph-vendor-B0sEms9Z.js";import{A as ke,C as Ae,D as je,E as Me,F as Ne,I as Pe,M as Fe,N as Ie,O as Le,P as Re,S as ze,T as Be,_ as I,a as Ve,b as He,c as Ue,d as We,f as Ge,g as Ke,h as qe,i as Je,j as Ye,k as Xe,n as Ze,o as Qe,p as $e,r as et,s as tt,t as nt,u as rt,v as it,w as at,x as ot,y as st}from"./useRecentFiles-BrBl-AP1.js";import{A as ct,C as lt,Ct as L,D as ut,E as dt,F as ft,H as pt,I as mt,L as R,M as ht,P as z,S as B,T as V,a as gt,b as _t,bt as vt,c as yt,j as bt,l as xt,pt as St,s as Ct,tt as wt,w as Tt,wt as Et,y as H,yt as Dt}from"./index-CEM9bz_x.js";var Ot={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};Ot.node;var kt=le(Ot),At={name:`circle-x`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-circle`]};At.node;var jt=le(At),Mt={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};Mt.node;var Nt=le(Mt),Pt={name:`inbox`,size:24,node:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]};Pt.node;var Ft=le(Pt),It={name:`list-filter`,size:24,node:[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]};It.node;var Lt=le(It),Rt={name:`search-x`,size:24,node:[[`path`,{d:`m13.5 8.5-5 5`,key:`1cs55j`}],[`path`,{d:`m8.5 8.5 5 5`,key:`a8mexj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]};Rt.node;var zt=le(Rt),U=e(n(),1),Bt=(0,U.lazy)(()=>H(()=>import(`./Skew-SpQE7zeJ.js`).then(e=>({default:e.Skew})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]),import.meta.url)),Vt=(0,U.lazy)(()=>H(()=>import(`./StageShape-CzR4jHOt.js`).then(e=>({default:e.StageShape})),__vite__mapDeps([17,1,2,5,6,7,3,4,8,9,10,11,12,13,14,15,16]),import.meta.url)),Ht=(0,U.lazy)(()=>H(()=>import(`./TinyTask-CIPRxWfT.js`).then(e=>({default:e.TinyTask})),__vite__mapDeps([18,1,2,5,6,7,3,4,8,9,10,11,12,13,14,15,16]),import.meta.url)),Ut=(0,U.lazy)(()=>H(()=>import(`./ShuffleIO-wZB94LS8.js`).then(e=>({default:e.ShuffleIO})),__vite__mapDeps([19,1,2,3,4,5,6,8,9,10,11,12,13,14,15,20,16]),import.meta.url)),Wt=(0,U.lazy)(()=>H(()=>import(`./PartitionSizing-DZLnjy0d.js`).then(e=>({default:e.PartitionSizing})),__vite__mapDeps([21,1,2,3,4,5,6,8,9,10,11,12,13,14,15,20,16]),import.meta.url)),Gt=(0,U.lazy)(()=>H(()=>import(`./Spill-DEw0Kd1i.js`).then(e=>({default:e.Spill})),__vite__mapDeps([22,1,2,3,4,5,6,8,9,10,11,12,13,14,16]),import.meta.url)),Kt=(0,U.lazy)(()=>H(()=>import(`./GcPressure-AoL_ZNrV.js`).then(e=>({default:e.GcPressure})),__vite__mapDeps([23,1,2,3,4,5,6,8,9,10,11,12,13,14,15]),import.meta.url)),qt=(0,U.lazy)(()=>H(()=>import(`./StageFailed-BEfXdEJc.js`).then(e=>({default:e.StageFailed})),__vite__mapDeps([24,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),Jt=(0,U.lazy)(()=>H(()=>import(`./TaskFailures-BZ8kLZiO.js`).then(e=>({default:e.TaskFailures})),__vite__mapDeps([25,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),Yt=(0,U.lazy)(()=>H(()=>import(`./RetryWaste-BbEPsdMw.js`).then(e=>({default:e.RetryWaste})),__vite__mapDeps([26,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),Xt=(0,U.lazy)(()=>H(()=>import(`./SlowHost-DwDBCTvr.js`).then(e=>({default:e.SlowHost})),__vite__mapDeps([27,1,2,3,4,5,6,8,9,10,11,12,13,14,15]),import.meta.url)),Zt=(0,U.lazy)(()=>H(()=>import(`./StageSlowness-vMPsnAaa.js`).then(e=>({default:e.StageSlowness})),__vite__mapDeps([28,1,2,3,4,5,6,9,10,11,8,12,13,14,15]),import.meta.url)),Qt=(0,U.lazy)(()=>H(()=>import(`./Straggler-Cf__OGl5.js`).then(e=>({default:e.Straggler})),__vite__mapDeps([29,1,2,3,4,5,6,8,9,10,11,12,13,14,15]),import.meta.url)),$t=(0,U.lazy)(()=>H(()=>import(`./SpeculationWaste-73PDmj0c.js`).then(e=>({default:e.SpeculationWaste})),__vite__mapDeps([30,1,2,3,4,5,6,9,10,11,8,12,13,14,15]),import.meta.url)),en=(0,U.lazy)(()=>H(()=>import(`./ColdStart-BoiYzEyV.js`).then(e=>({default:e.ColdStart})),__vite__mapDeps([31,1,2,3,4,5,6,9,10,11,8,12,13,14]),import.meta.url)),tn=(0,U.lazy)(()=>H(()=>import(`./MemoryUtilization-B65OVZlq.js`).then(e=>({default:e.MemoryUtilization})),__vite__mapDeps([32,1,2,3,4,5,6,8,9,10,12,13]),import.meta.url)),nn=(0,U.lazy)(()=>H(()=>import(`./ExecutorUtilization-OE6VMFkG.js`).then(e=>({default:e.ExecutorUtilization})),__vite__mapDeps([33,1,2,3,4,5,6,9,10,12,13]),import.meta.url)),rn=(0,U.lazy)(()=>H(()=>import(`./CachingOpportunity-Cn-LmRA4.js`).then(e=>({default:e.CachingOpportunity})),__vite__mapDeps([34,1,2,3,4,5,6,8,9,10,12,13]),import.meta.url)),an=(0,U.lazy)(()=>H(()=>import(`./JobFailures-DF3U2z1f.js`).then(e=>({default:e.JobFailures})),__vite__mapDeps([35,3,1,2,4,5,6,8,9,10]),import.meta.url)),on=(0,U.lazy)(()=>H(()=>import(`./ConfigAudit-BoJc6PAw.js`).then(e=>({default:e.ConfigAudit})),__vite__mapDeps([36,1,2,3,4,5,6,8,9,10,12,13]),import.meta.url)),sn=(0,U.lazy)(()=>H(()=>import(`./DuplicatePlanSubtree-BaAuGAoo.js`).then(e=>({default:e.DuplicatePlanSubtree})),__vite__mapDeps([37,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),cn=(0,U.lazy)(()=>H(()=>import(`./SmallFiles-yjY_6sT1.js`).then(e=>({default:e.SmallFiles})),__vite__mapDeps([38,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),ln=(0,U.lazy)(()=>H(()=>import(`./UnderBroadcast-CBm8ZPoS.js`).then(e=>({default:e.UnderBroadcast})),__vite__mapDeps([39,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),un=(0,U.lazy)(()=>H(()=>import(`./OverBroadcast-DXbJREDl.js`).then(e=>({default:e.OverBroadcast})),__vite__mapDeps([40,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),dn=(0,U.lazy)(()=>H(()=>import(`./CacheUtilization-Ce0K6_X2.js`).then(e=>({default:e.CacheUtilization})),__vite__mapDeps([41,1,2,3,4,5,6,8,9,10,12,13]),import.meta.url)),fn=(0,U.lazy)(()=>H(()=>import(`./CoreUsageArea-BFfXKu7K.js`).then(e=>({default:e.CoreUsageArea})),__vite__mapDeps([42,1,2,3,4,5,6,8,9,10,13]),import.meta.url)),pn=(0,U.lazy)(()=>H(()=>import(`./AutoscalingChurn-CUSIvvab.js`).then(e=>({default:e.AutoscalingChurn})),__vite__mapDeps([43,1,2,3,4,5,6,8,9,10]),import.meta.url)),mn=(0,U.lazy)(()=>H(()=>import(`./IncompleteRun-Bv6IzgsQ.js`).then(e=>({default:e.IncompleteRun})),__vite__mapDeps([44,3,1,2,4,5,6,9,10]),import.meta.url));function W(e,t){e.displayName=t}W(Bt,`Skew`),W(Vt,`StageShape`),W(Ht,`TinyTask`),W(Ut,`ShuffleIO`),W(Wt,`PartitionSizing`),W(Gt,`Spill`),W(Kt,`GcPressure`),W(qt,`StageFailed`),W(Jt,`TaskFailures`),W(Yt,`RetryWaste`),W(Xt,`SlowHost`),W(Zt,`StageSlowness`),W(Qt,`Straggler`),W($t,`SpeculationWaste`),W(en,`ColdStart`),W(tn,`MemoryUtilization`),W(nn,`ExecutorUtilization`),W(rn,`CachingOpportunity`),W(an,`JobFailures`),W(on,`ConfigAudit`),W(sn,`DuplicatePlanSubtree`),W(cn,`SmallFiles`),W(ln,`UnderBroadcast`),W(un,`OverBroadcast`),W(dn,`CacheUtilization`),W(fn,`CoreUsageArea`),W(pn,`AutoscalingChurn`),W(mn,`IncompleteRun`);var hn={incompleteRun:{component:mn,region:`action`,widgetId:`incomplete-run`,routeable:!0},skew:{component:Bt,region:`action`,widgetId:`skew`,routeable:!0},stageShape:{component:Vt,region:`action`,widgetId:`stage-shape`,routeable:!0},tinyTask:{component:Ht,region:`action`,widgetId:`tiny-task`,routeable:!0},shuffle:{component:Ut,region:`action`,widgetId:`shuffle-io`,routeable:!0},partitionSizing:{component:Wt,region:`action`,widgetId:`partition-sizing`,routeable:!0},spill:{component:Gt,region:`action`,widgetId:`spill`,routeable:!0},gc:{component:Kt,region:`action`,widgetId:`gc-pressure`,routeable:!0},stageFailed:{component:qt,region:`action`,widgetId:`stage-failed`,routeable:!0},failures:{component:Jt,region:`action`,widgetId:`task-failures`,routeable:!0},retryWaste:{component:Yt,region:`action`,widgetId:`retry-waste`,routeable:!0},slowHost:{component:Xt,region:`action`,widgetId:`slow-host`,routeable:!0},stageSlowness:{component:Zt,region:`action`,widgetId:`stage-slowness`,routeable:!0},straggler:{component:Qt,region:`action`,widgetId:`straggler`,routeable:!0},speculationWaste:{component:$t,region:`action`,widgetId:`speculation-waste`,routeable:!0},coldStart:{component:en,region:`action`,widgetId:`cold-start`,routeable:!0},memoryUtilization:{component:tn,region:`reference`,widgetId:`memory-utilization`,routeable:!0},utilization:{component:nn,region:`reference`,widgetId:`executor-utilization`,routeable:!0},coreLocality:{component:fn,region:`reference`,widgetId:`core-usage-area`,routeable:!0},cachingOpportunity:{component:rn,region:`action`,widgetId:`caching-opportunity`,routeable:!0},cacheUtilization:{component:dn,region:`reference`,widgetId:`cache-utilization`,routeable:!0},jobFailureRate:{component:an,region:`action`,widgetId:`job-failures`,routeable:!0},autoscalingChurn:{component:pn,region:`action`,widgetId:`autoscaling-churn`,routeable:!0},configAudit:{component:on,region:`action`,widgetId:`config-audit`,routeable:!0},duplicatePlanSubtree:{component:sn,region:`action`,widgetId:`duplicate-plan-subtree`,routeable:!0},smallFiles:{component:cn,region:`action`,widgetId:`small-files`,routeable:!0},underBroadcast:{component:ln,region:`action`,widgetId:`under-broadcast`,routeable:!0},overBroadcast:{component:un,region:`action`,widgetId:`over-broadcast`,routeable:!0}},gn={action:0,reference:1};function _n(e){return Object.entries(e).filter(([e])=>hn[e]!==void 0).map(([e,{order:t}])=>({entry:hn[e],type:e,order:t})).sort((e,t)=>gn[e.entry.region]-gn[t.entry.region]||e.order-t.order).map(({entry:e,type:t})=>({component:e.component,region:e.region,widgetId:e.widgetId,type:t}))}var vn=new Set([`cacheUtilization`,`memoryUtilization`,`utilization`]);function yn(e){let t=hn[e];return t!==void 0&&t.region===`reference`&&!vn.has(e)}function bn(){return Object.entries(hn).filter(([e])=>yn(e)).map(([,e])=>({component:e.component,widgetId:e.widgetId}))}var G=Oe(),xn={clean:{box:`border-clean/40 bg-clean/10`,icon:`text-clean`,title:`text-clean`},neutral:{box:`border-border/60 bg-muted/40`,icon:`text-muted-foreground`,title:`text-foreground`}};function Sn({icon:e,tone:t=`neutral`,title:n,description:r,action:i,className:a}){let o=xn[t];return(0,G.jsxs)(`div`,{className:F(`flex items-start gap-3 rounded-xl border p-4`,o.box,a),children:[(0,G.jsx)(e,{"aria-hidden":`true`,className:F(`mt-0.5 size-4 shrink-0`,o.icon)}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsx)(`p`,{className:F(`text-sm font-medium`,o.title),children:n}),r?(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r}):null]}),i]})}var Cn=[`critical`,`warning`,`info`];function wn(){return{impactBands:new Set,types:new Set,stages:new Set}}function Tn(e){return e.impactBands.size===0&&e.types.size===0&&e.stages.size===0}function En(e,t){return gt(e,{impactBand:t.impactBands,type:t.types,stageId:t.stages})}function Dn(e,t){return e.filter(e=>En(e,t))}function On(e,t){return[`impactBands`,`types`,`stages`].filter(n=>!En(e,{...wn(),[n]:t[n]}))}function kn(e,t){let n=new Set,r=new Set,i=new Set;for(let a of[...e,...t])n.add(a.impactBand),r.add(a.type),a.stageId!=null&&i.add(a.stageId);return{impactBands:Cn.filter(e=>n.has(e)),types:[...r].sort(),stages:[...i].sort((e,t)=>e-t)}}function An(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}function jn(e,t){let n=new URLSearchParams(e),r=wn();for(let e of An(n.get(`impact`)))Cn.includes(e)&&r.impactBands.add(e);let i=new Set(t.types);for(let e of An(n.get(`type`)))i.has(e)&&r.types.add(e);for(let e of An(n.get(`stage`))){let t=Number(e);Number.isInteger(t)&&r.stages.add(t)}return r}function Mn(e){let t=[];return e.impactBands.size&&t.push(`impact=${Cn.filter(t=>e.impactBands.has(t)).join(`,`)}`),e.types.size&&t.push(`type=${[...e.types].sort().join(`,`)}`),e.stages.size&&t.push(`stage=${[...e.stages].sort((e,t)=>e-t).join(`,`)}`),t.length?`?${t.join(`&`)}`:``}var Nn=(0,U.createContext)(null);function Pn(e,t){let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}function Fn({options:e,fileId:t,children:n}){let[r,i]=(0,U.useState)(()=>jn(typeof window>`u`?``:window.location.search,e));(0,U.useEffect)(()=>{if(typeof window>`u`)return;let e=Mn(r),t=`${window.location.pathname}${e}${window.location.hash}`;window.history.replaceState(window.history.state,``,t)},[r]);let a=(0,U.useRef)(t);(0,U.useEffect)(()=>{a.current!==t&&(a.current=t,i(wn()))},[t]),(0,U.useEffect)(()=>()=>{if(typeof window>`u`)return;let e=`${window.location.pathname}${window.location.hash}`;window.history.replaceState(window.history.state,``,e)},[]),(0,U.useEffect)(()=>{if(typeof window>`u`)return;let t=()=>i(jn(window.location.search,e));return window.addEventListener(`popstate`,t),()=>window.removeEventListener(`popstate`,t)},[e]);let o=(0,U.useCallback)(e=>i(t=>({...t,impactBands:Pn(t.impactBands,e)})),[]),s=(0,U.useCallback)(e=>i(t=>({...t,types:Pn(t.types,e)})),[]),c=(0,U.useCallback)(e=>i(t=>({...t,stages:Pn(t.stages,e)})),[]),l=(0,U.useCallback)(()=>i(wn()),[]),u=(0,U.useMemo)(()=>({selection:r,toggleImpactBand:o,toggleType:s,toggleStage:c,clearAll:l,replaceSelection:i}),[r,o,s,c,l]);return(0,G.jsx)(Nn.Provider,{value:u,children:n})}function In(){let e=(0,U.useContext)(Nn);if(!e)throw Error(`useFindingFilter outside FindingFilterProvider`);return e}function Ln(){let{clearAll:e}=In();return(0,G.jsx)(Sn,{icon:zt,title:`No findings match the active filters`,description:`Adjust or clear the filters to see findings.`,action:(0,G.jsx)(`button`,{type:`button`,onClick:e,className:`cursor-pointer text-sm underline`,children:`Clear all filters`})})}function Rn({className:e,orientation:t=`horizontal`,...n}){return(0,G.jsx)(S,{"data-slot":`separator`,orientation:t,className:F(`shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch`,e),...n})}var zn=U.createContext({size:`default`,variant:`default`,spacing:2,orientation:`horizontal`});function Bn({className:e,variant:t,size:n,spacing:r=2,orientation:i=`horizontal`,children:a,...o}){return(0,G.jsx)(C,{"data-slot":`toggle-group`,"data-variant":t,"data-size":n,"data-spacing":r,"data-orientation":i,style:{"--gap":r},className:F(`group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch`,e),...o,children:(0,G.jsx)(zn.Provider,{value:{variant:t,size:n,spacing:r,orientation:i},children:a})})}function Vn({className:e,children:t,variant:n=`default`,size:r=`default`,...i}){let a=U.useContext(zn);return(0,G.jsx)(b,{"data-slot":`toggle-group-item`,"data-variant":a.variant||n,"data-size":a.size||r,"data-spacing":a.spacing,className:F(`shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t`,ze({variant:a.variant||n,size:a.size||r}),e),...i,children:t})}var Hn={critical:`aria-pressed:bg-critical/10 aria-pressed:text-critical`,warning:`aria-pressed:bg-warning/10 aria-pressed:text-warning`,info:`aria-pressed:bg-info/10 aria-pressed:text-info`};function Un(e,t,n){let r=new Set(e);for(let e of r)t.has(e)||n(e);for(let e of t)r.has(e)||n(e)}function Wn({label:e,count:t,children:n}){return(0,G.jsxs)(at,{children:[(0,G.jsxs)(je,{className:F(Et({variant:`outline`,size:`sm`}),`gap-1.5`),"aria-label":`Filter by ${e.toLowerCase()}`,children:[e,t>0&&(0,G.jsx)(`span`,{className:`rounded-full bg-primary px-1.5 text-xs font-medium text-primary-foreground`,children:t}),(0,G.jsx)(Ce,{"aria-hidden":`true`,className:`opacity-60`})]}),(0,G.jsx)(Me,{align:`start`,className:`max-h-72 w-56 overflow-y-auto`,children:n})]})}function Gn({options:e,resultCount:t}){let{selection:n,toggleImpactBand:r,toggleType:i,toggleStage:a,clearAll:o}=In(),[s,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(``),d=(0,U.useMemo)(()=>{let t=s.trim();return t?e.stages.filter(e=>String(e).includes(t)):e.stages},[e.stages,s]),f=(0,U.useMemo)(()=>{let t=l.trim().toLowerCase();return t?e.types.filter(e=>e.toLowerCase().includes(t)||me(e).toLowerCase().includes(t)):e.types},[e.types,l]);if(e.impactBands.length===0&&e.types.length===0&&e.stages.length===0)return null;let p=!Tn(n),m=[...[...n.impactBands].map(e=>({key:`impact-${e}`,label:`impact ${e}`,onRemove:()=>r(e)})),...[...n.types].map(e=>({key:`type-${e}`,label:`type ${e}`,onRemove:()=>i(e)})),...[...n.stages].map(e=>({key:`stage-${e}`,label:`stage ${e}`,onRemove:()=>a(e)}))];return(0,G.jsxs)(`section`,{"aria-label":`Filter findings`,className:`flex flex-wrap items-center gap-x-3 gap-y-2 rounded-xl border border-border/60 p-2`,children:[(0,G.jsxs)(`span`,{title:`Narrow the whole dashboard to findings matching the chosen impact bands, types, or stages`,className:`flex items-center gap-1.5 text-xs font-medium text-muted-foreground`,children:[(0,G.jsx)(Lt,{"aria-hidden":`true`,className:`size-3.5`}),`Filter findings`]}),(0,G.jsx)(`span`,{role:`status`,"aria-live":`polite`,className:`text-xs text-muted-foreground`,children:p?`${t} finding${t===1?``:`s`} match${t===1?`es`:``} the active filters`:`Showing all ${t} finding${t===1?``:`s`}`}),(0,G.jsx)(Rn,{orientation:`vertical`,className:`h-6`}),e.impactBands.length>0&&(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`Impact`}),(0,G.jsx)(Bn,{multiple:!0,"aria-label":`Filter by impact`,value:[...n.impactBands],onValueChange:e=>Un(e,n.impactBands,r),children:e.impactBands.map(e=>(0,G.jsxs)(Vn,{value:e,variant:`outline`,size:`sm`,"aria-label":`Filter by impact: ${e}`,className:F(`tap-target-comfortable gap-1.5`,Hn[e]),children:[(0,G.jsx)(Se,{impactBand:e}),e]},e))})]}),e.types.length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Rn,{orientation:`vertical`,className:`h-6`}),(0,G.jsxs)(Wn,{label:`Type`,count:n.types.size,children:[(0,G.jsx)(`div`,{className:`p-1`,children:(0,G.jsx)(Ae,{type:`text`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>e.stopPropagation(),placeholder:`Search type…`,"aria-label":`Search types`,autoComplete:`off`,className:`h-8`})}),f.map(e=>(0,G.jsxs)(Be,{checked:n.types.has(e),onCheckedChange:()=>i(e),"aria-label":`Filter by type: ${e}`,children:[(0,G.jsx)(`span`,{className:`rounded bg-muted px-1 text-xs font-medium text-foreground!`,children:me(e)}),` `,e]},e)),f.length===0&&(0,G.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No matching type`})]})]}),e.stages.length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Rn,{orientation:`vertical`,className:`h-6`}),(0,G.jsxs)(Wn,{label:`Stage`,count:n.stages.size,children:[(0,G.jsx)(`div`,{className:`p-1`,children:(0,G.jsx)(Ae,{type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>e.stopPropagation(),placeholder:`Search stage id…`,"aria-label":`Search stages`,autoComplete:`off`,className:`h-8`})}),d.map(e=>(0,G.jsxs)(Be,{checked:n.stages.has(e),onCheckedChange:()=>a(e),"aria-label":`Filter by stage: ${e}`,children:[`Stage `,e]},e)),d.length===0&&(0,G.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No matching stage`})]})]}),p&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Rn,{orientation:`vertical`,className:`h-6`}),(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[m.map(e=>(0,G.jsxs)(`button`,{type:`button`,onClick:e.onRemove,"aria-label":`Remove filter: ${e.label}`,className:`tap-target-comfortable inline-flex cursor-pointer items-center gap-1 rounded-full border border-border bg-muted px-2 py-0.5 text-xs hover:bg-muted/70`,children:[e.label,` `,(0,G.jsx)(St,{"aria-hidden":`true`,className:`size-3`})]},e.key)),(0,G.jsx)(`button`,{type:`button`,onClick:o,className:`tap-target-comfortable cursor-pointer text-xs underline`,children:`Clear all filters`})]})]})]})}function Kn(e,t){let n=[];for(let{launch:t,finish:r}of e)r>t&&(n.push({t,delta:1}),n.push({t:r,delta:-1}));n.sort((e,t)=>e.t-t.t||e.delta-t.delta);let r=[],i=0;for(let e=0;e<n.length;e++){let a=n[e];i+=a.delta;let o=n[e+1];if(!o||o.t===a.t)continue;let s=t==null?i:Math.min(i,t);r.push({tStart:a.t,tEnd:o.t,busy:s})}return r}function qn(e,{bucketBy:t=`time`,bucketWidthMs:n=1e3,hypotheticalCores:r=null}={}){let i=Kn(e,r);if(t===`coreCount`){let e=[];for(let t of i)e[t.busy]=(e[t.busy]??0)+(t.tEnd-t.tStart);for(let t=0;t<e.length;t++)e[t]===void 0&&(e[t]=0);return{mode:`coreCount`,histogram:e}}if(i.length===0)return{mode:`time`,bucketWidthMs:n,startTime:null,endTime:null,buckets:[]};let a=i[0].tStart,o=i[i.length-1].tEnd,s=[];for(let e=a;e<o;e+=n){let t=e+n,r=0;for(let n of i){let i=Math.max(n.tStart,e),a=Math.min(n.tEnd,t);a>i&&(r+=n.busy*(a-i))}s.push({tStart:e,tEnd:t,busyCoreMs:r,avgBusyCores:r/n})}return{mode:`time`,bucketWidthMs:n,startTime:a,endTime:o,buckets:s}}async function Jn(e,t){let n=[...e.stages.keys()],r=await Promise.all(n.map(e=>t(e).catch(()=>null))),i=[],a=!1;for(let e of r){if(!e){a=!0;continue}let{metrics:t,fieldNames:n}=e,r=n.length,o=n.indexOf(`launchTime`),s=n.indexOf(`finishTime`);if(o!==-1&&s!==-1)for(let e=0;e<t.length;e+=r)i.push({launch:t[e+o],finish:t[e+s]})}return{intervals:i,incomplete:a}}async function Yn(e,t){let{intervals:n,incomplete:r}=await Jn(e,t),{histogram:i}=qn(n,{bucketBy:`coreCount`});return{histogram:i??[],incomplete:r}}function Xn(e){let t=P(e=>e.exportMode);return{exportMode:t,getTaskData:t?void 0:e}}function Zn(e,t=2e3){if(e.length<=t)return e;if(t<=1)return e.length?[e[0]]:[];let n=e.length-1,r=n/(t-1),i=Array(t);for(let a=0;a<t;a++)i[a]=e[Math.min(n,Math.round(a*r))];return i}function K({value:e,context:t}){return(0,G.jsx)(`div`,{className:`space-y-2`,children:(0,G.jsxs)(`p`,{className:`flex min-h-[4rem] flex-wrap content-start items-baseline gap-x-2`,children:[(0,G.jsx)(`span`,{className:`line-clamp-2 text-2xl font-semibold tracking-tight`,title:typeof e==`string`?e:void 0,children:e}),(0,G.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t})]})})}var Qn=220;function $n({appModel:e,getTaskData:t}){let{exportMode:n,getTaskData:r}=Xn(t),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(!1),[d,p]=(0,U.useState)(!1),h=e.stages.size>0;if((0,U.useEffect)(()=>{if(!h||!d||i!==null||!r)return;let t=!1;return Yn(e,r).then(({histogram:e,incomplete:n})=>{t||(a(e),s(n))}),()=>{t=!0}},[e,r,h,d,i]),!h)return null;let g=(i??[]).map((e,t)=>({cores:String(t),coreCount:t,ms:e})),_=Zn(g),v=g.reduce((e,t)=>t.ms>e.ms?t:e,g[0]);return(0,G.jsx)(B,{title:`Core-Usage Distribution`,id:`core-usage-histogram`,open:d,onOpenChange:p,summary:i!==null&&v?(0,G.jsx)(K,{value:T(v.ms),context:`at ${v.coreCount} concurrent core${v.coreCount===1?``:`s`}`}):void 0,children:i===null?n?(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Core-usage detail isn’t included in exported reports.`}):(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Loading core usage…`}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(He,{ariaLabel:`Wall-clock time spent at each concurrent-core count across the run. See the table below for exact values.`,height:Qn,table:{caption:`Wall-clock time by concurrent-core count`,columns:[`Concurrent cores`,`Time`],rows:i.map((e,t)=>[t,T(e)]),align:[`right`,`right`]},children:(0,G.jsxs)(l,{data:_,children:[(0,G.jsx)(c,{vertical:!1,stroke:I.muted,strokeOpacity:.2}),(0,G.jsx)(m,{dataKey:`cores`,tick:{fontSize:10},label:{value:`Concurrent busy cores`,position:`insideBottom`,offset:-5,fontSize:10}}),(0,G.jsx)(f,{tick:{fontSize:10},width:48,tickFormatter:e=>T(e)}),(0,G.jsx)(u,{dataKey:`ms`,name:`Time`,fill:I.accent})]})}),o?(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Reopen this file to compute full core usage because some task data was released.`}):null,(0,G.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`See `,(0,G.jsx)(D,{anchor:`#bottleneck-utilization`,children:`how to read concurrent-core utilization`}),`.`]})]})})}var er=`This estimate is derived from a simplified compute model; compare it against wall-clock data before acting on it.`,q=e=>`${Math.round(e*100)/100} core-h`;function tr(){return(0,G.jsx)(N,{children:(0,G.jsx)(qe,{confidence:`low`,validationRequired:er})})}function nr(){let e=A()?.data,t=e?.efficiency;if(!e||!t||t.availableComputeHours<=0)return null;let n=null;return t.dominantWaste===`driver`?n=(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`strong`,{children:`Driver-bound waste dominates.`}),` Review driver sizing (spark.driver.memory / spark.driver.cores) before scaling executors.`]}):t.dominantWaste===`executor`&&(n=(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`strong`,{children:`Executor-bound waste dominates.`}),` Review executor count / cores by reducing cluster size or enabling dynamic allocation.`]})),(0,G.jsx)(B,{title:`Compute Efficiency`,statusBadge:(0,G.jsx)(tr,{}),defaultCollapsed:!0,summary:(0,G.jsx)(K,{value:t.wastagePct==null?q(t.availableComputeHours):`${t.wastagePct}% wasted`,context:`of ${q(t.availableComputeHours)} available`}),children:(0,G.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[!e.wallClockReliable&&(0,G.jsx)(N,{children:(0,G.jsx)(`p`,{className:`text-muted-foreground`,children:`This run used concurrent job groups: the driver/executor split below is approximate, not precise.`})}),(0,G.jsxs)(`p`,{children:[`Available: `,(0,G.jsx)(`strong`,{children:q(t.availableComputeHours)}),t.wastagePct!=null&&(0,G.jsxs)(G.Fragment,{children:[` `,`· wasted `,(0,G.jsxs)(`strong`,{children:[t.wastagePct,`%`]})]})]}),(0,G.jsxs)(`p`,{children:[(0,G.jsx)(Se,{impactBand:`info`}),` Driver-bound waste: `,(0,G.jsx)(`strong`,{children:q(t.driverWasteHours)})]}),(0,G.jsxs)(`p`,{children:[(0,G.jsx)(Se,{impactBand:`info`}),` Executor-bound waste: `,(0,G.jsx)(`strong`,{children:q(t.executorWasteHours)})]}),(0,G.jsxs)(`p`,{className:`text-muted-foreground`,children:[`Floor (same executors, zero skew): `,T(t.floorZeroSkewMs)]}),n]})})}var rr=[{label:`Extract`,key:`extract`},{label:`Transform`,key:`transform`},{label:`Load`,key:`load`}];function ir(){let e=A()?.data.etlPhases;if(!e||e.extract+e.transform+e.load===0)return null;let t=rr.reduce((t,n)=>e[n.key]>e[t.key]?n:t);return(0,G.jsx)(B,{title:`ETL Phase Attribution`,defaultCollapsed:!0,summary:(0,G.jsx)(K,{value:`${t.label} ${T(e[t.key])}`,context:`largest phase`}),children:(0,G.jsxs)(`div`,{className:`space-y-1`,children:[rr.map(({label:t,key:n})=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:t}),`: `,T(e[n])]},n)),(0,G.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Each phase adds up the run time of its stages. Stages that run at the same time both count, so a phase can add up to more than the run's wall-clock.`}),(0,G.jsx)(N,{children:(0,G.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Heuristic: a stage that both shuffles and writes counts in Transform and Load, so phases can overlap and need not sum to wall-clock.`})})]})})}var ar=220;function or(e){let t=e.app,n=e.executors.added,r=e.executors.removed;if(t?.startTime==null||t?.endTime==null)return{times:[],counts:[]};let i=t.endTime-t.startTime,a=Math.max(5e3,Math.floor(i/100)),o=[],s=[],c=new Map(r.map(e=>[e.executorId,e.timestamp]));for(let e=t.startTime;e<=t.endTime;e+=a){let r=n.filter(t=>{let n=c.get(t.executorId)??1/0;return t.timestamp<=e&&e<n}).length;o.push(((e-t.startTime)/1e3).toFixed(0)+`s`),s.push(r)}return{times:o,counts:s}}function sr({active:e,payload:t,label:n}){return!e||!t||t.length===0?null:(0,G.jsxs)(`div`,{style:it,"data-testid":`executor-count-tooltip`,children:[`At `,String(n),`: Active executors `,String(t[0].value)]})}var cr=(0,U.memo)(function({appModel:e,activeFileId:t}){let{chartData:n,sampled:r,hasSeries:i,peak:a}=(0,U.useMemo)(()=>{let{times:t,counts:n}=or(e),r=t.map((e,t)=>({label:e,count:n[t]})),i=Zn(r),a=n.length>0;return{chartData:r,sampled:i,hasSeries:a,peak:a?Math.max(...n):0}},[e,t]);return i?(0,G.jsx)(B,{title:`Executor Count Over Time`,summary:(0,G.jsx)(K,{value:`${a} peak`,context:`concurrent executors`}),children:(0,G.jsx)(He,{ariaLabel:`Executor count over time. See the table below for exact values.`,height:ar,table:{caption:`Executor timeline: active executor count over time`,columns:[`Time`,`Active executors`],rows:n.map(e=>[e.label,e.count]),align:[`left`,`right`]},children:(0,G.jsxs)(d,{data:r,children:[(0,G.jsx)(c,{vertical:!1,stroke:I.muted,strokeOpacity:.2}),(0,G.jsx)(m,{dataKey:`label`,tick:{fontSize:10},minTickGap:24}),(0,G.jsx)(f,{allowDecimals:!1,tick:{fontSize:10},width:32}),(0,G.jsx)(g,{content:sr}),(0,G.jsx)(h,{type:`stepAfter`,dataKey:`count`,name:`Active executors`,stroke:I.clean,fill:I.clean,fillOpacity:.15})]})})}):(0,G.jsx)(B,{title:`Executor Count Over Time`,summary:(0,G.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Timeline unavailable: no end time recorded.`}),children:(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`This run has no ApplicationEnd event, so the executor timeline can't be plotted without fabricating an end time. See the Incomplete Run finding for what's still reliable.`})})}),lr=[10,20,50,80,100,110,120,150,200,300,400,500];function ur(e,t,n){return t<=0||n<=0?0:e/Math.min(n,t)}function dr(e,t){let n=0;for(let r of Object.keys(e)){let{totalTaskDurationSum:i,taskCount:a}=e[r];n+=ur(i,a,t)}return n}function fr({app:e,observedActiveMs:t,runAggregates:n,executorsAdded:r}){let i=n?.perStage??{},a=wt(e??{},r),o=a>0?dr(i,a):0,s=t>0?Math.round(Math.abs(o-t)/t*100):null,c=o>0?t/o:1;return{baselineCores:a,testPercentages:lr,predictions:lr.map(e=>{let t=Math.max(1,Math.round(a*e/100));return{pct:e,cores:t,estMakespanMs:Math.round(dr(i,t)*c)}}),modelErrorPct:s}}var pr=`What-If Executor Scaling`,mr=220,hr=20;function gr([e,t]){let n=(t-e)*.1;return[Math.max(0,e-n),t+n]}function _r(e){return[...e.stages.values()].some(e=>{let t=e.submittedAt,n=e.completedAt;return typeof t==`number`&&Number.isFinite(t)&&typeof n==`number`&&Number.isFinite(n)&&n>t})}function vr(e){return e.evidenceAvailability?.entries.find(e=>e.key===`taskCoreTime`)}function yr({reason:e,evidence:t}){return(0,G.jsx)(B,{title:pr,summary:(0,G.jsxs)(`span`,{className:`text-muted-foreground text-xs`,children:[`Not available: `,e]}),children:(0,G.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Not available: `,e,` `,(0,G.jsx)(qe,{evidenceKey:t})]})})}function br(e){if(e===100)return`with the current executors`;if(e<100)return`with ${e}% of the executors`;let t=e/100;return`with ${Number.isInteger(t)?t:t.toFixed(1)}× the executors`}function xr({appModel:e}){let t=A()?.data,n=vr(e);if(!Te(e.runAggregates)||n!=null&&n.state!==`present`)return(0,G.jsx)(yr,{reason:n?.summary??`No usable task and core-time evidence in this log.`,evidence:`taskCoreTime`});if(!t)return null;let r=fr({app:e.app,observedActiveMs:t.wallClock.stagesActive,runAggregates:e.runAggregates,executorsAdded:e.executors.added});if(r.baselineCores<=0)return(0,G.jsx)(yr,{reason:`Baseline executor/core capacity is unavailable in this log.`});if(!_r(e))return(0,G.jsx)(yr,{reason:`Usable stage timing is unavailable in this log.`});let i=r.modelErrorPct!=null&&r.modelErrorPct>=hr,a=Zn(r.predictions),l=r.predictions.reduce((e,t)=>t.estMakespanMs<e.estMakespanMs?t:e);return(0,G.jsx)(B,{title:pr,defaultCollapsed:!0,summary:(0,G.jsx)(K,{value:T(l.estMakespanMs),context:`best case, ${br(l.pct)}`}),children:(0,G.jsxs)(`div`,{className:`space-y-3`,children:[(0,G.jsx)(N,{children:(0,G.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Model Error:`,` `,(0,G.jsx)(`strong`,{className:i?`text-warning`:void 0,children:r.modelErrorPct==null?`—`:`${r.modelErrorPct}%`}),` `,`(idealized makespan vs. observed); higher means all estimates below carry more error, since a single log only observes one scale.`]})}),(0,G.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Move along this curve by changing `,(0,G.jsx)(`code`,{children:`spark.dynamicAllocation`}),`’s executor bounds, see the `,(0,G.jsx)(D,{anchor:`#config-autoscale-bounds`,children:`autoscaling config guide`}),`.`]}),t.wallClockReliable?null:(0,G.jsx)(N,{children:(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`This run used concurrent job groups, so the wall-clock-based estimates below may be unreliable.`})}),(0,G.jsx)(N,{children:(0,G.jsx)(`p`,{className:`text-xs`,children:(0,G.jsx)(qe,{evidenceKey:`taskCoreTime`})})}),(0,G.jsx)(He,{ariaLabel:`Estimated makespan by executor percentage: diminishing-returns curve.`,height:mr,table:{caption:`Estimated makespan by executor percentage`,columns:[`% Executors`,`Cores`,`Est. makespan`],rows:r.predictions.map(e=>[`${e.pct}%`,e.cores,T(e.estMakespanMs)]),align:[`right`,`right`,`right`]},children:(0,G.jsxs)(o,{data:a,children:[(0,G.jsx)(c,{stroke:I.muted,strokeOpacity:.2}),(0,G.jsx)(m,{dataKey:`pct`,tickFormatter:e=>`${e}%`,tick:{fontSize:10}}),(0,G.jsx)(f,{domain:gr,tickFormatter:e=>T(e),tick:{fontSize:10},width:56}),(0,G.jsx)(g,{formatter:e=>[T(Number(e)),`Est. makespan`],labelFormatter:e=>`${e}% executors`}),(0,G.jsx)(s,{type:`monotone`,dataKey:`estMakespanMs`,name:`Est. makespan`,stroke:I.accent,dot:{r:3}})]})})]})})}function Sr(e){let t=hn[e.type],n=typeof e.recommendation==`string`?e.recommendation.trim():``;return!t?.routeable||!n?null:{finding:e,widgetId:t.widgetId,region:t.region,findingLabel:yt(e.type),stageId:typeof e.stageId==`number`?e.stageId:null,recommendation:n}}function Cr(e,t){return t.includes(e)?Sr(e):null}function wr(e,t){return Tr(e,t)[0]??null}function Tr(e,t){return se(e,t).map(Sr).filter(e=>e!==null)}function Er(e,t){return`${e} ${t}${e===1?``:`s`}`}function Dr({text:e,label:t,testId:n}){let[r,i]=(0,U.useState)(!1);return(0,G.jsxs)(L,{variant:`outline`,size:`sm`,"data-testid":n,onClick:()=>{ot(e).then(()=>{i(!0),setTimeout(()=>i(!1),1500)}).catch(()=>{})},children:[r?(0,G.jsx)(Pe,{"aria-hidden":`true`}):(0,G.jsx)(Nt,{"aria-hidden":`true`}),r?`Copied`:t]})}function Or({text:e}){let[t,n]=(0,U.useState)(!1),r=async()=>{try{await ot(e),n(!0),setTimeout(()=>n(!1),1500)}catch{}};return(0,G.jsxs)(L,{variant:`ghost`,size:`sm`,"data-testid":`copy-finding-button`,onClick:()=>void r(),children:[t?(0,G.jsx)(Pe,{"aria-hidden":`true`}):(0,G.jsx)(Nt,{"aria-hidden":`true`}),t?`Copied`:`Copy`]})}function kr({step:e,finding:t,interpretation:n,index:r,onRoute:i}){let{openStage:a}=_t(),o=Ee[me(t.type)],s=we(n,t),c=s?.figure??null,l=s?.meaning??null,u=`next-step-${r}-title`,d=M()===`advanced`,f=d?s?.provenance??null:null,p=d&&t.confidence&&t.confidence!==`high`?t.confidence:null;return(0,G.jsxs)(`li`,{className:`flex gap-3`,"data-testid":`next-step`,"aria-labelledby":u,children:[(0,G.jsx)(`span`,{"aria-hidden":`true`,className:F(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full text-xs font-semibold tabular-nums`,r===0?`bg-primary text-primary-foreground`:`bg-muted text-foreground`),children:r+1}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1.5 [overflow-wrap:anywhere]`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,G.jsx)(j,{type:t.type,impactBand:t.impactBand,docAnchor:t.docAnchor}),(0,G.jsxs)(`h3`,{id:u,className:`text-sm font-semibold`,children:[Ct(t),e.stageId==null?null:(0,G.jsxs)(`span`,{className:`font-normal text-muted-foreground`,children:[` in Stage `,e.stageId]})]}),c?(0,G.jsxs)(`span`,{className:`font-mono text-xs text-muted-foreground tabular-nums sm:ml-auto`,children:[(0,G.jsx)(`span`,{className:`font-sans`,children:`Potential savings `}),(0,G.jsx)(`span`,{className:`font-semibold text-foreground`,children:c}),l?(0,G.jsxs)(`span`,{className:`font-sans`,children:[` `,l]}):null]}):null]}),o?(0,G.jsxs)(`p`,{className:`text-sm`,children:[(0,G.jsx)(`span`,{className:`font-medium`,children:`What's happening: `}),o.description]}):null,(0,G.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[(0,G.jsx)(`span`,{className:`font-medium text-foreground`,children:`What to try: `}),e.recommendation]}),f||p?(0,G.jsxs)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`next-step-provenance`,children:[f?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`font-medium text-foreground`,children:`Estimate: `}),f]}):null,p?(0,G.jsxs)(`span`,{title:typeof t.validationRequired==`string`?t.validationRequired:void 0,children:[f?` `:``,`${p[0].toUpperCase()}${p.slice(1)} confidence: verify before acting.`]}):null]}):null,e.relatedTypes.length>0?(0,G.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Also flagged here: `,e.relatedTypes.map(yt).join(`, `),`. These often share this cause, so the same fix may clear them too.`]}):null,(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 pt-1`,children:[(0,G.jsxs)(L,{size:`sm`,variant:r===0?`default`:`outline`,"data-shortcut-target":!0,onClick:()=>{let e=Sr(t);e&&i(e)},children:[`Show evidence`,(0,G.jsx)(vt,{"aria-hidden":`true`})]}),e.stageId==null?null:(0,G.jsxs)(L,{size:`sm`,variant:`ghost`,onClick:()=>a(e.stageId),children:[`Stage `,e.stageId,` details`]}),(0,G.jsx)(Or,{text:e.copyText})]})]})]})}var Ar=`docs/user-guide/understanding-findings.html`;function jr(){let[e,t]=(0,U.useState)(!1),n=O(),r=P(e=>e.exportMode);return(0,G.jsxs)(`div`,{className:`text-sm`,children:[(0,G.jsxs)(`button`,{type:`button`,className:`tap-target-comfortable inline-flex cursor-pointer items-center gap-1 rounded-sm text-left font-medium text-primary underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,"aria-expanded":e,"aria-controls":`newcomer-primer`,onClick:()=>t(e=>!e),children:[`New to Spark tuning? How to read this report`,e?(0,G.jsx)(_e,{"aria-hidden":`true`,className:`size-4`}):(0,G.jsx)(Ce,{"aria-hidden":`true`,className:`size-4`})]}),e?(0,G.jsxs)(`div`,{id:`newcomer-primer`,className:`mt-2 max-w-prose space-y-2 rounded-md border border-border bg-muted/40 p-3 text-muted-foreground`,children:[(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`span`,{className:`font-medium text-foreground`,children:`Stages and tasks.`}),` Spark splits each job into stages. A stage runs the same code as many tasks, one per slice (partition) of the data, and it finishes only when its slowest task does. Stage numbers match the Spark UI.`]}),(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`span`,{className:`font-medium text-foreground`,children:`Executors and cores.`}),` Tasks run on executors, the worker processes of your cluster, one task per core at a time. Idle capacity is how much of those cores ran nothing.`]}),(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`span`,{className:`font-medium text-foreground`,children:`Shuffle.`}),` Moving data between stages, for example for a join or a group-by. It is often the most expensive part of a job.`]}),(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`span`,{className:`font-medium text-foreground`,children:`Potential savings and colors.`}),` A time figure, such as 58.6s of run time, estimates how much sooner the run could finish; it is not a guarantee. A resource figure in core-hours (core-h) or gigabyte-hours of memory (GB-h) is cluster time a fix would free up: it cuts cost, but may not shorten the run. Red (critical), amber (warning) and blue (info) show how serious each finding is. When a finding shows a time-savings figure, its color usually follows that figure.`]}),r?null:(0,G.jsx)(`a`,{href:Ar,target:`_blank`,rel:`noopener noreferrer`,className:`inline-block text-primary underline-offset-4 hover:underline`,onClick:e=>{!n||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),n.openSite(Ar))},children:`What every finding means`})]}):null]})}function Mr({interpretation:e,onRoute:t}){let{title:n,summary:r,failed:i,clean:a,failureReason:o,remaining:s,copyText:c}=e.data.verdict,l=e.data.verdict.steps.map(t=>({step:t,finding:fe(e,t.leadIndex)})).filter(e=>e.finding!=null),u=M();return(0,G.jsxs)(`section`,{id:`run-verdict`,tabIndex:-1,"aria-labelledby":`run-verdict-title`,"data-testid":`run-verdict`,className:F(`scroll-mt-20 space-y-4 rounded-xl border bg-card p-4 outline-none focus-visible:ring-2 focus-visible:ring-ring sm:p-5`,a?`border-clean/40`:i?`border-critical/40`:`border-border`),children:[(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsxs)(`h2`,{id:`run-verdict-title`,className:F(`flex items-center gap-2 font-heading text-lg font-semibold`,a&&`text-clean`,i&&`text-critical`),children:[a?(0,G.jsx)(Dt,{"aria-hidden":`true`,className:`size-5 shrink-0`}):null,i?(0,G.jsx)(jt,{"aria-hidden":`true`,className:`size-5 shrink-0`}):null,n]}),(0,G.jsx)(`p`,{className:`max-w-prose text-sm text-muted-foreground`,children:r.join(` `)}),o?(0,G.jsxs)(`p`,{"data-testid":`run-failure-reason`,className:`max-w-prose pt-1 text-sm`,children:[(0,G.jsx)(`span`,{className:`font-medium`,children:`Spark's recorded reason: `}),(0,G.jsx)(`code`,{className:`font-mono text-xs [overflow-wrap:anywhere]`,children:o})]}):null]}),u===`advanced`?null:(0,G.jsx)(jr,{}),l.length>0?(0,G.jsx)(`ol`,{"aria-label":`Next steps`,className:`space-y-4`,children:l.map(({step:n,finding:r},i)=>(0,G.jsx)(kr,{step:n,finding:r,interpretation:e,index:i,onRoute:t},n.key))}):null,l.length>0?(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s>0?(0,G.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[Er(s,`more place`),` to look at in the full list under Findings.`]}):(0,G.jsx)(`span`,{}),(0,G.jsx)(Dr,{label:`Copy next steps`,testId:`copy-plan-button`,text:c??``})]}):null,u===`advanced`&&l.length>1?(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i?`Order: failures first, then by the high end of potential savings; impact band breaks ties.`:`Order: by the high end of potential savings, quantified estimates before unquantified ones; impact band breaks ties.`}):null]})}function Nr(){let e=P(e=>e.activeFileId),t=P(e=>e.exportMode),{resetToDropZone:n}=pt(),r=O();return t||e!==`sample-run`?null:(0,G.jsxs)(`section`,{"aria-label":`Sample run`,"data-testid":`sample-run-notice`,className:`flex flex-col gap-3 rounded-xl border border-primary/30 bg-primary/5 p-4 text-sm sm:flex-row sm:items-center sm:justify-between`,children:[(0,G.jsxs)(`p`,{className:`max-w-prose`,children:[(0,G.jsx)(`span`,{className:`font-medium`,children:`This is the sample run`}),`, a real Spark job from a public example corpus, picked because it shows several common problems. Everything below works the same on your own event log.`]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:[(0,G.jsxs)(L,{size:`sm`,variant:`outline`,onClick:n,children:[`Load my event log`,(0,G.jsx)(vt,{"aria-hidden":`true`})]}),(0,G.jsx)(`a`,{href:re,target:`_blank`,rel:`noopener noreferrer`,className:`tap-target-comfortable inline-flex items-center rounded-sm px-2 text-primary underline-offset-4 hover:underline`,onClick:e=>{!r||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),r.openSite(re))},children:`Where do I find my log?`})]})]})}var Pr={critical:`inset 4px 0 0 var(--color-critical)`,warning:`inset 4px 0 0 var(--color-warning)`};function Fr({eyebrow:e,value:t,meta:n,flag:r=null,bar:i,dataTestid:a}){return(0,G.jsxs)(`div`,{"data-testid":a,className:`flex flex-col gap-1 p-3`,style:r?{boxShadow:Pr[r]}:void 0,children:[(0,G.jsxs)(`span`,{className:F(`flex items-center gap-1.5 text-xs font-medium text-muted-foreground`,r&&ge[r]),children:[r&&(0,G.jsx)(Se,{impactBand:r}),e]}),(0,G.jsx)(`div`,{className:F(`font-heading text-2xl font-semibold`,r&&ge[r]),children:t}),(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n}),i]})}function Ir({pct:e,flag:t,label:n}){let r=Math.max(0,Math.min(100,e));return(0,G.jsx)(`div`,{role:`img`,"aria-label":n,className:`mt-0.5 h-1.5 w-full overflow-hidden rounded-full bg-muted`,children:(0,G.jsx)(`div`,{className:F(`h-full rounded-full`,t?be[t]:`bg-clean`),style:{width:`${r}%`}})})}function Lr({active:e,total:t}){let n=t>0?Math.max(0,Math.min(100,e/t*100)):0;return(0,G.jsxs)(`div`,{role:`img`,"aria-label":`Active ${T(e)} of ${T(t)} total`,className:`mt-0.5 flex h-1.5 w-full overflow-hidden rounded-full bg-muted`,children:[(0,G.jsx)(`div`,{className:`h-full bg-clean`,style:{width:`${n}%`}}),(0,G.jsx)(`div`,{className:`h-full flex-1 bg-muted-foreground/60`})]})}function Rr(e){return e>0?`Ran ${T(e)}`:`No stage activity recorded`}function zr(){return(0,G.jsxs)(`div`,{className:`flex items-start gap-2 rounded-xl border border-warning/40 bg-warning/10 p-4`,children:[(0,G.jsx)(Se,{impactBand:`warning`,className:`mt-1.5`}),(0,G.jsxs)(`p`,{className:`text-sm text-warning`,children:[(0,G.jsx)(`span`,{className:`font-semibold tracking-wide uppercase`,children:`Timing unavailable`}),`. This run has no complete application timing interval, so wall-clock, efficiency, and unused core time can’t be measured.`]})]})}function Br({interpretation:e,catalog:t}){let n=M(),{runShape:r,coverage:i,wallClock:a}=e;if(r.wallClockMs==null)return(0,G.jsx)(zr,{});let o=r.wallClockMs,s=a.stagesActive,c=!i.noFinishedStages,l=r.efficiencyPct,u=r.efficiencyFlag,d=t.find(e=>e.type===`coldStart`),f=r.unusedCoreTimePct,p=r.unusedCoreTimeFlag;return(0,G.jsx)(ct,{className:`overflow-hidden py-0`,children:(0,G.jsxs)(`div`,{className:`grid grid-cols-1 divide-y divide-border sm:grid-cols-3 sm:divide-x sm:divide-y-0`,children:[(0,G.jsx)(Fr,{eyebrow:`Wall-clock`,dataTestid:`kpi-wall-clock`,value:o>0?T(o):`—`,meta:n===`advanced`||s<=0?(0,G.jsxs)(G.Fragment,{children:[Rr(s),d?` · ${d.value}s cold start`:``]}):`Total run time. Stages were running for ${T(s)} of it.`,bar:(0,G.jsx)(Lr,{active:s,total:o})}),(0,G.jsx)(Fr,{eyebrow:`Efficiency`,dataTestid:`kpi-efficiency`,value:c?l==null?`Unavailable`:(0,G.jsxs)(G.Fragment,{children:[l,(0,G.jsx)(`small`,{children:`%`})]}):`Not measured`,flag:u,meta:c?l==null?`This run has no complete application timing interval.`:n===`advanced`?o>s?`${Rr(s)} · ${T(o-s)} idle/gap time`:`executors active the whole run`:`Share of the run with a stage running. Higher is better.`:`No stage in this log recorded an end, so there is no stage time to measure.`,bar:l==null?void 0:(0,G.jsx)(Ir,{pct:l,flag:u,label:`Efficiency ${l}%`})}),(0,G.jsx)(Fr,{eyebrow:`Unused core time`,dataTestid:`kpi-wastage`,value:f==null?`Unavailable`:(0,G.jsxs)(G.Fragment,{children:[f,(0,G.jsx)(`small`,{children:`%`})]}),flag:p,meta:r.unusedCoreTimeUnavailableReason===`application-timing`?`Unused core time needs complete application timing.`:r.unusedCoreTimeUnavailableReason===`core-usage-summary`?`Unused core time needs the core-usage summary.`:r.unusedCoreTimeUnavailableReason===`executor-capacity`?`Unused core time needs usable executor-capacity data.`:n===`advanced`?`Driver-idle + executor-slack core-hours as a share of available capacity. Directional, not a cost figure.`:`Driver idle plus executor slack across the whole run, so it can run higher than the idle capacity a verdict step reports. Lower is better. Not a cost figure.`,bar:f==null?void 0:(0,G.jsx)(Ir,{pct:f,flag:p,label:`Unused core time ${f}%`})})]})})}function Vr({className:e,...t}){return(0,G.jsx)(_,{"data-slot":`accordion`,className:F(`flex w-full flex-col`,e),...t})}function Hr({className:e,...t}){return(0,G.jsx)(ee,{"data-slot":`accordion-item`,className:F(`not-last:border-b`,e),...t})}function Ur({className:e,children:t,headingLevel:n=3,...r}){let i=`h${n}`;return(0,G.jsx)(x,{className:`flex`,render:(0,G.jsx)(i,{}),children:(0,G.jsxs)(v,{"data-slot":`accordion-trigger`,className:F(`group/accordion-trigger relative flex flex-1 cursor-pointer items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:cursor-default aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground`,e),...r,children:[t,(0,G.jsx)(Ce,{"data-slot":`accordion-trigger-icon`,className:`pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden`}),(0,G.jsx)(_e,{"data-slot":`accordion-trigger-icon`,className:`pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline`})]})})}function Wr({className:e,children:t,...n}){return(0,G.jsx)(y,{"data-slot":`accordion-content`,className:`h-(--accordion-panel-height) overflow-hidden text-sm transition-[height] duration-150 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none`,...n,children:(0,G.jsx)(`div`,{className:F(`pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4`,e),children:t})})}function Gr(e){return e.length===0?e:e[0].toUpperCase()+e.slice(1)}function Kr({type:e,label:t,thresholdSummary:n,status:r=`passed`}){let i=r===`notRun`;return(0,G.jsxs)(R,{"data-testid":`clean-check-row`,"data-clean-check-type":e,"data-clean-check-status":r,children:[(0,G.jsx)(z,{className:`w-px`,children:(0,G.jsxs)(`span`,{className:i?`inline-flex h-6 items-center gap-1 rounded-full bg-muted px-2 font-mono text-xs font-medium whitespace-nowrap text-muted-foreground`:`inline-flex h-6 items-center gap-1 rounded-full bg-clean/10 px-2 font-mono text-xs font-medium whitespace-nowrap text-clean`,children:[(0,G.jsx)(i?kt:Dt,{"aria-hidden":`true`,className:`size-3.5 shrink-0`}),me(e)]})}),(0,G.jsxs)(z,{className:`whitespace-normal`,children:[(0,G.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:Gr(t)}),(0,G.jsx)(N,{children:(0,G.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:Gr(`${n}.`)})})]})]})}var qr=`suggested-improvements`,Jr={stage:`per-stage`,app:`app-level`,sql:`sql-scope`,config:`config-scope`},Yr=[`per-stage`,`app-level`,`sql-scope`,`config-scope`],Xr={"per-stage":`Per-stage checks`,"app-level":`App-level checks`,"sql-scope":`SQL plan checks`,"config-scope":`Config checks`};function Zr(e,t,n){let r=[...e,...t].filter(E);return _n(n).filter(({type:e})=>!yn(e)).map(({component:e,widgetId:t,type:n},i)=>{let a=r.filter(e=>e.type===n);return{component:e,widgetId:t,index:i,findings:a,impactBand:ce(a)}}).filter(e=>e.impactBand!==void 0).sort((e,t)=>ie[e.impactBand]-ie[t.impactBand]||e.index-t.index)}function Qr({catalog:e,configFindings:t=[],coverage:n,detectors:r}){let i=[...e,...t].filter(E),a=e=>e in n.notRunReasons,o=Object.keys(hn).filter(e=>!yn(e)).filter(e=>!i.some(t=>t.type===e)).map(e=>({type:e,findingLabel:yt(e)})),s=o.filter(({type:e})=>!a(e)),c=o.filter(({type:e})=>a(e)),l=c.length>0?n.gaps:[],u=new Map;for(let e of s){let t=r[e.type]?.scope,n=t?Jr[t]:`app-level`;u.has(n)||u.set(n,[]),u.get(n).push(e)}return(0,G.jsx)(Vr,{children:(0,G.jsxs)(Hr,{value:`clean-checks`,children:[(0,G.jsx)(Ur,{children:`Clean checks`}),(0,G.jsxs)(Wr,{children:[c.length>0?(0,G.jsxs)(`div`,{"data-testid":`clean-checks-not-run`,className:`pb-4`,children:[(0,G.jsx)(`p`,{className:`pb-1 text-xs font-medium text-muted-foreground`,children:`Not checked on this log`}),(0,G.jsx)(`p`,{className:`pb-2 text-xs text-muted-foreground`,children:`The log lacked the data these checks need, so they neither passed nor failed.`}),l.length>0?(0,G.jsx)(`ul`,{"data-testid":`clean-checks-not-run-reasons`,className:`list-disc space-y-0.5 pb-2 pl-5 text-xs text-muted-foreground [overflow-wrap:anywhere]`,children:l.map(e=>(0,G.jsx)(`li`,{children:e},e))}):null,(0,G.jsx)(bt,{children:(0,G.jsx)(ht,{children:c.map(({type:e,findingLabel:t})=>(0,G.jsx)(Kr,{type:e,label:t,thresholdSummary:r[e]?.thresholdSummary??``,status:`notRun`},e))})})]}):null,(0,G.jsxs)(`p`,{className:`pb-2 text-xs text-muted-foreground`,children:[s.length===0?`No check could run on this log.`:`Every check below passed. No fix needed.`,(0,G.jsx)(N,{children:` Each line's caption states the threshold it was measured against.`})]}),Yr.map(e=>{let t=u.get(e);return!t||t.length===0?null:(0,G.jsxs)(`div`,{className:`pt-3 first:pt-0`,children:[(0,G.jsx)(`p`,{className:`pb-1 text-xs font-medium text-muted-foreground`,children:Xr[e]}),(0,G.jsx)(bt,{children:(0,G.jsx)(ht,{children:t.map(({type:e,findingLabel:t})=>(0,G.jsx)(Kr,{type:e,label:t,thresholdSummary:r[e]?.thresholdSummary??``},e))})})]},e)})]})]})})}function $r(e){return xe(e.type)?.genericRecommendation(e)}var ei=`inline-flex h-7 shrink-0 cursor-pointer items-center gap-1 rounded-full border border-border bg-background px-2.5 text-xs font-medium whitespace-nowrap outline-none transition-colors hover:bg-muted focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50`;function ti({stageId:e,className:t}){let{openStage:n}=_t();return(0,G.jsxs)(`button`,{type:`button`,className:F(ei,t),title:`Open details for Stage ${e}`,"aria-label":`Open details for Stage ${e}`,onClick:()=>n(e),children:[`Stage `,(0,G.jsx)(`b`,{children:e})]})}var ni=30;function ri(e,{limit:t=6,chunk:n=ni,dataset:r=e}={}){let[i,a]=(0,U.useState)({dataset:r,revealed:0}),o=!Object.is(i.dataset,r);o&&a({dataset:r,revealed:0});let s=t+(o?0:i.revealed);return{visible:e.slice(0,s),remaining:Math.max(0,e.length-s),revealMore:()=>a(e=>({dataset:r,revealed:(Object.is(e.dataset,r)?e.revealed:0)+n})),revealThrough:e=>a(n=>{let i=Object.is(n.dataset,r)?n.revealed:0,a=Math.max(i,e-t+1);return a>i?{dataset:r,revealed:a}:n})}}function ii({pills:e}){let t=new Set,n=e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0)),{visible:r,remaining:i,revealMore:a}=ri(n,{limit:6,dataset:JSON.stringify(n.map(({id:e})=>e))}),o=n.slice(r.length);return(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[r.map(e=>(0,G.jsx)(ti,{stageId:e.id},e.id)),i>0&&(0,G.jsxs)(`button`,{type:`button`,className:F(ei,`bg-muted`),title:`Also flagged: Stage ${o.map(e=>e.id).join(`, Stage `)}`,"aria-label":`Show ${i} more stage${i===1?``:`s`}`,onClick:a,children:[`+`,i]})]})}function ai({page:e,totalPages:t,onPrev:n,onNext:r,renderJumpControl:i}){return t<=1?null:(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs ${i?`justify-between`:`justify-end`}`,children:[i?.(),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(L,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable tap-target-comfortable--sm`,onClick:n,disabled:e===0,children:`Previous`}),(0,G.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Page `,e+1,` of `,t]}),(0,G.jsx)(L,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable tap-target-comfortable--sm`,onClick:r,disabled:e===t-1,children:`Next`})]})]})}var oi=10,si=`max-sm:flex max-sm:flex-wrap max-sm:items-start`,ci=`max-sm:w-auto max-sm:shrink-0`,li=`max-sm:min-w-0 max-sm:flex-1 max-sm:whitespace-normal max-sm:[overflow-wrap:anywhere]`,ui=`max-sm:w-full max-sm:basis-full max-sm:pt-0 max-sm:text-left`;function di(e){let t=$e(e),n=e.stageId==null?t&&t.length>0?`St.${oe(t)}`:null:`St.${e.stageId}`;if(e.type===`duplicatePlanSubtree`&&e.rootName!=null){let t=fi(e);return n&&t?`${n} · ${t}`:t??n}return n||(e.type===`configAudit`?e.property:null)}function fi(e){if(e.type!==`duplicatePlanSubtree`||e.rootName==null)return null;let t=ue(e.rootName),n=e.groupIndex==null?t:`${t} #${Number(e.groupIndex)+1}`;return e.executionId==null?n:`${n} (SQL ${e.executionId})`}function pi({finding:e,textClassName:t}){let{stageId:n}=e,r=$e(e);if(n!=null)return(0,G.jsx)(ti,{stageId:n});if(r&&r.length>0){let n=fi(e);return(0,G.jsxs)(`span`,{className:`inline-flex min-w-0 flex-wrap items-center gap-1.5`,children:[(0,G.jsx)(ii,{pills:r.map(e=>({id:e}))}),n?(0,G.jsx)(`span`,{className:F(`truncate`,t),title:n,children:n}):null]})}let i=di(e);return i?(0,G.jsx)(`span`,{className:F(`min-w-0 truncate`,t),title:i,children:i}):null}function mi({finding:e,allFindings:t,onRoute:n}){let r=Cr(e,t),i=di(e),a=De(e)?.figure??null,o=xt(e),s=Ct(e);return(0,G.jsxs)(R,{"data-testid":`fix-these-first-row`,"data-finding-type":e.type,className:si,children:[(0,G.jsx)(z,{className:F(`w-px`,ci),children:(0,G.jsx)(j,{type:e.type,impactBand:e.impactBand,docAnchor:e.docAnchor})}),(0,G.jsx)(z,{className:F(`whitespace-normal`,li),children:(0,G.jsxs)(`button`,{type:`button`,"data-shortcut-target":!0,className:`cursor-pointer rounded-sm text-left focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:()=>r&&n(r),children:[(0,G.jsx)(`span`,{className:`block text-sm font-medium`,children:s}),(0,G.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:o})]})}),(0,G.jsx)(z,{className:F(`w-px text-right font-mono text-xs text-muted-foreground`,ui),title:[i,a].filter(Boolean).join(` · `),children:(0,G.jsxs)(`span`,{className:`flex items-center justify-end gap-1.5 max-sm:justify-start`,children:[(0,G.jsx)(pi,{finding:e}),a?(0,G.jsx)(`span`,{className:`shrink-0`,children:a}):null]})})]})}function hi({finding:e,allFindings:t,onRoute:n,id:r}){let i=Cr(e,t),a=di(e),o=De(e)?.figure??null,s=xt(e),c=Ct(e),l=e.stageId!=null||a!=null;return(0,G.jsxs)(R,{id:r,"data-testid":`fix-these-first-row`,"data-finding-type":e.type,className:`bg-muted/50`,children:[(0,G.jsxs)(z,{colSpan:2,className:`whitespace-normal`,children:[l?(0,G.jsx)(`div`,{className:`mb-1`,children:(0,G.jsx)(pi,{finding:e,textClassName:`line-clamp-1 break-words text-xs font-medium font-mono`})}):null,(0,G.jsxs)(`button`,{type:`button`,"data-shortcut-target":!0,className:`block w-full cursor-pointer rounded-sm text-left focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:()=>i&&n(i),children:[l?null:(0,G.jsx)(`span`,{className:`line-clamp-1 break-words text-xs font-medium`,children:c}),(0,G.jsx)(`span`,{className:`line-clamp-1 break-words text-xs text-muted-foreground`,children:s})]})]}),(0,G.jsx)(z,{className:`w-px text-right font-mono text-xs text-muted-foreground`,children:o})]})}function gi({group:e,allFindings:t,expanded:n,onToggle:r,onRoute:i}){let[a,o]=(0,U.useState)(0),s=e.findings,c=s[0],l=$r(c),u=Ct(c),d=Math.ceil(s.length/oi),f=Math.min(a,Math.max(0,d-1)),p=s.slice(f*oi,f*oi+oi),m=`fix-these-first-group-content-${e.kind}-${e.type}${e.unit?`-${e.unit}`:``}`;return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(R,{"data-testid":`fix-these-first-group-row`,"data-finding-type":e.type,className:si,children:[(0,G.jsx)(z,{className:F(`w-px`,ci),children:(0,G.jsx)(j,{type:e.type,impactBand:c.impactBand,docAnchor:he(e.findings)})}),(0,G.jsx)(z,{className:F(`whitespace-normal`,li),children:(0,G.jsxs)(`button`,{type:`button`,"aria-expanded":n,"aria-controls":m,"data-shortcut-target":!0,className:`cursor-pointer rounded-sm text-left focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:r,children:[(0,G.jsx)(`span`,{className:`block text-sm font-medium`,children:u}),l?(0,G.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:l}):null]})}),(0,G.jsx)(z,{className:F(`w-px text-right font-mono text-xs text-muted-foreground`,ui),children:(0,G.jsxs)(`span`,{className:`inline-flex items-center justify-end gap-1.5`,title:e.statTitle,children:[e.stat,n?(0,G.jsx)(_e,{"aria-hidden":`true`,className:`size-4 shrink-0 text-muted-foreground`}):(0,G.jsx)(Ce,{"aria-hidden":`true`,className:`size-4 shrink-0 text-muted-foreground`})]})})]}),n&&p.map((e,n)=>(0,G.jsx)(hi,{finding:e,allFindings:t,onRoute:i,id:n===0?m:void 0},e.id)),n&&d>1&&(0,G.jsx)(R,{className:`bg-muted/50`,children:(0,G.jsx)(z,{colSpan:3,children:(0,G.jsx)(ai,{page:f,totalPages:d,onPrev:()=>o(e=>e-1),onNext:()=>o(e=>e+1)})})})]})}function _i(e,t,n,r){let{eligible:i,groups:a}=ve(r,[...e,...t],n);return{eligible:i,groups:a,triageTarget:wr(r,i)}}var vi={critical:`Critical`,warning:`Warning`,info:`Info`},yi=[`critical`,`warning`,`info`];function bi({impactBand:e,groups:t,widgets:n,allFindings:r,expandedGroupKey:i,onToggleGroup:a,onRoute:o,appModel:s,catalog:c,configFindings:l,getTaskData:u,activeFileId:d}){let f=M(),[p,m]=(0,U.useState)(!1),h=ut(),g=h!=null&&n.some(e=>e.widgetId===h.widgetId);if((0,U.useLayoutEffect)(()=>{g&&m(!0)},[g]),t.length===0&&n.length===0)return null;let _=`impact-band-${e}-heading`,v=`impact-band-${e}-evidence`,y=f===`basic`&&t.length>0&&n.length>0,b=!y||p||g;return(0,G.jsxs)(`section`,{"aria-labelledby":_,className:`space-y-3`,children:[(0,G.jsx)(`h2`,{id:_,tabIndex:-1,className:`scroll-mt-20 rounded-sm font-heading text-base font-semibold outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:vi[e]}),t.length>0&&(0,G.jsx)(bt,{children:(0,G.jsx)(ht,{children:t.map(e=>{if(e.findings.length===1)return(0,G.jsx)(mi,{finding:e.findings[0],allFindings:r,onRoute:o},e.findings[0].id);let{key:t}=e;return(0,G.jsx)(gi,{group:e,allFindings:r,expanded:i===t,onToggle:()=>a(t),onRoute:o},t)})})}),y?(0,G.jsxs)(L,{variant:`ghost`,size:`sm`,"aria-expanded":b,"aria-controls":v,onClick:()=>m(!b),children:[b?`Hide the evidence`:`Show the evidence (${n.length} ${n.length===1?`card`:`cards`})`,b?(0,G.jsx)(_e,{"aria-hidden":`true`}):(0,G.jsx)(Ce,{"aria-hidden":`true`})]}):null,n.length>0&&b&&(0,G.jsx)(`div`,{id:v,children:(0,G.jsx)(Tt,{children:n.map(({component:e,widgetId:t,index:n})=>(0,G.jsx)(V,{cardId:`alert-${n}`,widgetId:t,children:(0,G.jsx)(U.Suspense,{fallback:(0,G.jsx)(lt,{}),children:(0,G.jsx)(e,{appModel:s,catalog:c,configFindings:l,getTaskData:u,activeFileId:d,defaultCollapsed:!0})})},t))})})]})}function xi({appModel:e,catalog:t,configFindings:n=[],stages:r,getTaskData:i,activeFileId:a,onRoute:o}){let s=A(),{groups:c}=(0,U.useMemo)(()=>_i(t,n,r,s),[t,n,r,s]),l=[...t,...n],u=s?.data.detectors,d=(0,U.useMemo)(()=>u?Zr(t,n,u):[],[t,n,u]),[f,p]=(0,U.useState)(null),{groupsByImpactBand:m,widgetsByImpactBand:h}=(0,U.useMemo)(()=>{let e=new Map;for(let t of c){let n=t.band;e.has(n)||e.set(n,[]),e.get(n).push(t)}let t=new Map;for(let e of d)t.has(e.impactBand)||t.set(e.impactBand,[]),t.get(e.impactBand).push(e);return{groupsByImpactBand:e,widgetsByImpactBand:t}},[c,d]);return(0,G.jsxs)(`div`,{id:qr,className:`space-y-6 scroll-mt-20`,children:[yi.map(r=>(0,G.jsx)(bi,{impactBand:r,groups:m.get(r)??[],widgets:h.get(r)??[],allFindings:l,expandedGroupKey:f,onToggleGroup:e=>p(t=>t===e?null:e),onRoute:o,appModel:e,catalog:t,configFindings:n,getTaskData:i,activeFileId:a},r)),s?(0,G.jsx)(Qr,{catalog:t,configFindings:n,coverage:s.data.coverage,detectors:s.data.detectors}):null]})}var Si=5,Ci=30,wi=220;function Ti(e,t){if(e.length<2)return e[0]??null;let n=e[1]-e[0],r=Math.round((t-e[0])/n);return e[Math.min(e.length-1,Math.max(0,r))]}function Ei({metrics:e,fieldNames:t,markers:n={}}){let r=t.indexOf(`duration`);if(r===-1)return null;let i=t.length,a=e.length/i,o=[];for(let t=0;t<a;t++)o.push(e[t*i+r]);if(o.length<Si)return(0,G.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Too few tasks (`,o.length,`) for a distribution.`]});let{labels:s,data:d}=ne(o,Ci),h=s[1]-s[0],_=s.map((e,t)=>({bin:`${(e/1e3).toFixed(1)}s`,range:`${(e/1e3).toFixed(1)}s – ${((e+h)/1e3).toFixed(1)}s`,ms:e,count:d[t]})),v=n.p50==null?null:Ti(s,n.p50),y=n.p95==null?null:Ti(s,n.p95),b=v==null?void 0:_.find(e=>e.ms===v)?.bin,x=y==null?void 0:_.find(e=>e.ms===y)?.bin;return(0,G.jsx)(He,{title:`Task duration`,ariaLabel:`Task duration histogram`,height:wi,table:{caption:`Task duration histogram`,columns:[`Duration bin`,`Task count`],rows:_.map(e=>[e.range,e.count]),align:[`right`,`right`]},children:(0,G.jsxs)(l,{data:_,children:[(0,G.jsx)(c,{vertical:!1,stroke:I.muted,strokeOpacity:.2}),(0,G.jsx)(m,{dataKey:`bin`,tick:{fontSize:10}}),(0,G.jsx)(f,{allowDecimals:!1,tick:{fontSize:10},width:32}),(0,G.jsx)(g,{...st,formatter:e=>[`${Number(e)} task${Number(e)===1?``:`s`}`,`Count`],labelFormatter:(e,t)=>t?.[0]?.payload?.range??e}),(0,G.jsx)(u,{dataKey:`count`,name:`Tasks`,fill:I.accent}),b?(0,G.jsx)(p,{x:b,stroke:I.accent,label:`P50`}):null,x?(0,G.jsx)(p,{x,stroke:I.warning,label:`P95`}):null]})})}function Di({finding:e}){let t=(0,U.useId)(),n=De(e),r=e.impactEstimate;if(!r)return null;let i=n?.board;if(!i)return null;let a=`Estimate method: ${r.estimateMethod}`;return(0,G.jsxs)(`span`,{className:`impact-estimate text-xs text-muted-foreground`,title:a,tabIndex:0,"aria-describedby":t,children:[`Potential savings: `,(0,G.jsx)(`strong`,{children:i}),(0,G.jsx)(`span`,{id:t,className:`sr-only`,children:a})]})}var Oi=[`PROCESS_LOCAL`,`NODE_LOCAL`,`RACK_LOCAL`,`NO_PREF`,`ANY`],ki=[I.clean,I.accent,I.warning,I.muted,I.critical];function Ai(e){return e?new Date(e).toLocaleString():`—`}function ji({stats:e}){let t=new Map(e.map(e=>[e.locality,e.count])),n=Oi.filter(e=>t.has(e));for(let t of e)Oi.includes(t.locality)||n.push(t.locality);let r=n.map((e,n)=>({locality:e,count:t.get(e)??0,color:ki[Math.min(n,ki.length-1)]}));return(0,G.jsx)(He,{ariaLabel:`Task locality distribution`,height:140,table:{caption:`Task locality distribution`,columns:[`Locality tier`,`Task count`],rows:r.map(e=>[e.locality,e.count]),align:[`left`,`right`]},children:(0,G.jsxs)(l,{data:r,children:[(0,G.jsx)(c,{vertical:!1,stroke:I.muted,strokeOpacity:.2}),(0,G.jsx)(m,{dataKey:`locality`,tick:{fontSize:10}}),(0,G.jsx)(f,{allowDecimals:!1,tick:{fontSize:10},width:32}),(0,G.jsx)(g,{formatter:e=>[`${Number(e)} task${Number(e)===1?``:`s`}`,`Tasks`]}),(0,G.jsx)(u,{dataKey:`count`,name:`Tasks`,children:r.map(e=>(0,G.jsx)(a,{fill:e.color},e.locality))})]})})}function Mi(e,t){let n=new Map;for(let t of e){n.has(t.type)||n.set(t.type,{impactBand:t.impactBand,finding:t,recs:new Map});let e=n.get(t.type);ie[t.impactBand]<ie[e.impactBand]&&(e.impactBand=t.impactBand,e.finding=t),t.recommendation&&!e.recs.has(t.recommendation)&&e.recs.set(t.recommendation,{extended:t.type===`retryWaste`?t.extended??null:null})}let r=e=>t.includes(e)?t.indexOf(e):t.length;return[...n.entries()].sort(([e],[t])=>r(e)-r(t))}function Ni({rec:e,extended:t,finding:n,showImpactEstimate:r}){return(0,G.jsxs)(`div`,{className:`space-y-1 text-sm`,children:[(0,G.jsxs)(`p`,{className:`max-w-full leading-normal break-words`,children:[(0,G.jsx)(`span`,{className:`font-medium`,children:`What to try: `}),e]}),t?(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t}):null,r?(0,G.jsx)(Di,{finding:n}):null]})}function Pi(e,t){return`${e} ${t}${e===1?``:`s`}`}function Fi(e,t,n){let r=(e.completedAt??0)-(e.submittedAt??0),i=[];if(r>0){let e=t!=null&&t>0?Math.round(r/t*100):null;i.push(`Ran for ${T(r)}${e==null?``:`, ${e}% of this ${T(t)} run`}`)}return(e.taskCount??0)>0&&i.push(`split into ${Pi(e.taskCount,`task`)}`),[i.length>0?`${i.join(`, `)}.`:``,n===0?`Nothing was flagged on this stage.`:n===1?`1 finding here.`:`${n} findings here. They often share one cause, so start with the first.`].filter(Boolean).join(` `)}function Ii({stage:e,findings:t,typeOrder:n,catalog:r,runMs:i,onShowEvidence:a}){let o=A(),s=Mi(t,n);return(0,G.jsxs)(`section`,{"aria-label":`Why this stage was flagged`,className:`space-y-3`,children:[(0,G.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:Fi(e,i,s.length)}),s.length>0?(0,G.jsx)(`ol`,{className:`space-y-4 rounded-md border p-3`,children:s.map(([e,{impactBand:t,finding:n,recs:i}])=>{let s=we(o,n)?.compact!=null,c=Ee[me(e)],l=a?Cr(n,r):null;return(0,G.jsxs)(`li`,{className:`space-y-1.5`,"data-testid":`stage-finding`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsx)(j,{type:e,impactBand:t}),(0,G.jsx)(`h3`,{className:`text-sm font-semibold`,children:Ct(n)})]}),c?(0,G.jsxs)(`p`,{className:`text-sm`,children:[(0,G.jsx)(`span`,{className:`font-medium`,children:`What's happening: `}),c.description]}):null,[...i.entries()].map(([e,{extended:t}],r)=>(0,G.jsx)(Ni,{rec:e,extended:t,finding:n,showImpactEstimate:r===0&&s},r)),l&&a?(0,G.jsxs)(L,{size:`sm`,variant:`outline`,onClick:()=>a(l),children:[`Show evidence`,(0,G.jsx)(vt,{"aria-hidden":`true`})]}):null]},e)})}):null]})}function Li({stage:e,appModel:t}){return Je(e.id,t)?(0,G.jsx)(Ge,{title:`Query Plan`,children:(0,G.jsx)(et,{stageId:e.id,appModel:t})}):null}function Ri({stage:e,appModel:t,catalog:n,getTaskData:r,onShowEvidence:i}){let{exportMode:a,getTaskData:o}=Xn(r),[s,c]=(0,U.useState)(null),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(0),p=(e.taskCount??0)>0,m=A(),h=m?.data.stages[String(e.id)],g=m&&h?h.findingIndexes.map(e=>fe(m,e)).filter(e=>e!=null):[];(0,U.useEffect)(()=>{if(!p||!o)return;let t=!1;return u(!1),o(e.id).catch(()=>null).then(e=>{t||(e?c(e):u(!0))}),()=>{t=!0}},[d]);let _=(e.completedAt??0)-(e.submittedAt??0),v=(e.memoryBytesSpilled??0)>0||(e.diskBytesSpilled??0)>0,y=(e.jvmGCTime??0)>0||(e.gcPct??0)>0,b=e.fetchWaitTime??0,x=b>0&&_>0?Math.round(b/_*100):null,S=(e.inputBytes??0)>0?((e.outputBytes??0)/(e.inputBytes??0)).toFixed(2):null,C=e.localityStats??[];return(0,G.jsxs)(`div`,{className:`space-y-6`,children:[(0,G.jsx)(Ii,{stage:e,findings:g,typeOrder:h?.typeOrder??[],catalog:n,runMs:m?.data.runShape.wallClockMs??null,onShowEvidence:i}),(0,G.jsx)(Ve,{title:`Overview`,collapsible:!0,defaultOpen:!0,rows:[[`Duration`,T(_)],[`Submitted`,Ai(e.submittedAt)],[`Completed`,Ai(e.completedAt)],e.sqlExecutionId!=null&&[`SQL Execution`,`#${e.sqlExecutionId}`],e.stageType?[`Stage type`,e.stageType]:!1]}),(0,G.jsx)(Ve,{title:`Tasks`,collapsible:!0,rows:[[`Total`,String(e.taskCount)],[`Failed`,String(e.failedTasks)],[`P50 duration`,(e.taskDurationP50??0)>0?T(e.taskDurationP50):`—`],[`P95 duration`,(e.taskDurationP95??0)>0?T(e.taskDurationP95):`—`],[`Max duration`,(e.taskDurationMax??0)>0?T(e.taskDurationMax):`—`],(e.peakExecutionMemoryMax??0)>0&&[`Peak execution memory`,k(e.peakExecutionMemoryMax)]],children:p?a?(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Per-task duration data isn’t included in exported reports.`}):s?(0,G.jsx)(Ei,{metrics:s.metrics,fieldNames:s.fieldNames,markers:{p50:e.taskDurationP50,p95:e.taskDurationP95}}):l?(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Couldn’t load task data for this stage.`}),(0,G.jsx)(L,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>f(e=>e+1),children:`Retry`})]}):(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading task data…`}):null}),(0,G.jsx)(Ve,{title:`Locality`,collapsible:!0,rows:[],children:C.length>0?(0,G.jsx)(ji,{stats:C}):null}),(0,G.jsx)(Ve,{title:`I/O`,collapsible:!0,rows:[[`Input`,k(e.inputBytes)],[`Output`,k(e.outputBytes)],[`Shuffle read`,k(e.shuffleReadBytes)],[`Shuffle write`,k(e.shuffleWriteBytes)],b>0&&[`Fetch wait`,`${T(b)}${x==null?``:` (${x}%)`}`],S!=null&&[`I/O ratio`,S]]}),v?(0,G.jsx)(Ve,{title:`Spill`,collapsible:!0,rows:[[`Memory spilled`,k(e.memoryBytesSpilled)],[`Disk spilled`,k(e.diskBytesSpilled)],(e.memoryBytesSpilled??0)>0&&[`Classification`,e.spillClassification??`unclassified`]]}):null,y?(0,G.jsx)(Ve,{title:`GC`,collapsible:!0,rows:[[`JVM GC time`,T(e.jvmGCTime)],[`Executor run time`,T(e.executorRunTime)],[`GC %`,`${(e.gcPct??0).toFixed(1)}%`]]}):null,e.details?(0,G.jsx)(N,{children:(0,G.jsx)(Ge,{title:`Call Stack`,children:(0,G.jsx)(`pre`,{className:`overflow-x-auto rounded-md bg-muted p-2 text-xs whitespace-pre-wrap`,children:e.details})})}):null,(0,G.jsx)(Li,{stage:e,appModel:t})]})}function zi({appModel:e,catalog:t,getTaskData:n,onRoute:r}){let{stageId:i,close:a}=_t(),o=i==null?void 0:e.stages.get(i),s=o!=null,c=(0,U.useRef)(!1),l=r?e=>{c.current=!0,a(),r(e)}:void 0;return(0,G.jsx)(Qe,{open:s,onOpenChange:e=>{e||a()},children:(0,G.jsx)(tt,{className:`max-h-[85vh] overflow-y-auto sm:max-w-4xl`,finalFocus:()=>{let e=c.current;return c.current=!1,!e},children:o?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(rt,{children:[(0,G.jsxs)(We,{children:[`Stage `,o.id]}),o.name?(0,G.jsxs)(Ue,{className:`font-mono text-xs [overflow-wrap:anywhere]`,children:[(0,G.jsx)(`span`,{className:`font-sans`,children:`Code location: `}),o.name]}):null]}),(0,G.jsx)(Ri,{stage:o,appModel:e,catalog:t,getTaskData:n,onShowEvidence:l},o.id)]}):null})})}function Bi(e){return Vi(e)||typeof e==`function`||Hi(e)}function Vi(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function Hi(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function Ui(e,t){return e==null?null:Bi(e)?U.createElement(e,t):e}function Wi(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?Ui(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:Ui(n.cell,t.getContext())}return`header`in e&&e.header?Ui(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?Ui(e.footer.column.columnDef.footer,e.footer.getContext()):null}function Gi({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function Ki(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var qi=[],Ji=0,{link:Yi,unlink:Xi,propagate:Zi,checkDirty:Qi,shallowPropagate:$i}=Gi({update(e){return e._update()},notify(e){qi[ta++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,ia(e))}}),ea=0,ta=0,J,na=0;function ra(e){try{++na,e()}finally{--na||aa()}}function ia(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Xi(n,e)}function aa(){if(!(na>0)){for(;ea<ta;){let e=qi[ea];qi[ea++]=void 0,e.notify()}ea=0,ta=0}}function oa(e,t){let n=typeof e==`function`,r=e,i={_snapshot:n?void 0:e,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:+!n,get(){return J!==void 0&&Yi(i,J,Ji),i._snapshot},subscribe(e){let t=Ki(e),n={current:!1},r=sa(()=>{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=J,o=t?.compare??Object.is;if(n)J=i,++Ji,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{J=a,n&&(i.flags&=-5),ia(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&Qi(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&$i(e)}}else e&32&&(i.flags=e&-33);return J!==void 0&&Yi(i,J,Ji),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Zi(e),$i(e),aa())}},i}function sa(e){let t=()=>{let t=J;J=n,++Ji,n.depsTail=void 0,n.flags=6;try{return e()}finally{J=t,n.flags&=-5,ia(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&Qi(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,ia(this)}};return t(),n}function ca(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=la(e);if(n.length!==la(t).length)return!1;for(let r=0;r<n.length;r++)if(!Object.prototype.hasOwnProperty.call(t,n[r])||!Object.is(e[n[r]],t[n[r]]))return!1;return!0}function la(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}var ua=e(r(),1);function da(e,t){return e===t}function fa(e,t=e=>e,n){let r=n?.compare??da,i=(0,U.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,U.useCallback)(()=>e.get(),[e]);return(0,ua.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function pa(e){let t=fa(e.source,e.selector,{compare:ca});return typeof e.children==`function`?e.children(t):e.children}function ma(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function ha(e){let{createAtom:t,batch:n}=e,r=t(0);return{createOptionsStore:!1,wrapExternalAtoms:!1,addSubscription:()=>{throw Error(`Feature not supported in current reactivity implementation`)},unmount:()=>{throw Error(`Feature not supported in current reactivity implementation`)},schedule:e.schedule??(e=>queueMicrotask(e)),batch:n,untrack:e=>e(),createReadonlyAtom:(e,n)=>{let i=n?.compare??Object.is,a=!1,o,s=()=>{let t=e();return(!a||!i(o,t))&&(o=t,a=!0),o},c=t(()=>(r.get(),s()),{compare:i});return{get:s,subscribe:c.subscribe.bind(c)}},createWritableAtom:(e,n)=>t(e,{compare:n?.compare}),commit:()=>{r.set(e=>e+1)}}}function ga(e,t=Object.is){let n=!1,r;return{get:e.get,markCommitted:e=>{r=e,n=!0},subscribe:i=>e.subscribe(e=>{(!n||!t(r,e))&&i(e)})}}function _a(){return ha({createAtom:oa,batch:ra})}function va(e,t){return typeof e==`function`?e(t):e}function Y(e){if(Array.isArray(e))return e.map(Y);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?X():{},r=Object.keys(e);for(let t=0;t<r.length;t++){let i=r[t];Object.defineProperty(n,i,{configurable:!0,enumerable:!0,value:Y(e[i]),writable:!0})}return n}return e}function ya(e,t){let n=Object.keys(t),r=e;for(let e=0;e<n.length;e++){let i=n[e];!i.startsWith(`_memo_`)&&i!==`_cellsCache`&&(r[i]=t[i])}return e}function X(){return Object.create(null)}function ba(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function xa(e,t){return n=>{(t.options.atoms?.[e]??t.baseAtoms[e]).set(e=>va(n,e))}}function Sa(e){if(typeof e!=`object`||!e)return!1;if(Array.isArray(e))return!0;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Ca(e){return Reflect.ownKeys(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var wa=3;function Ta(e,t){return Ea(e,t,wa)}function Ea(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!Sa(e)||!Sa(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=Ca(e),i=Ca(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e<r.length;e++){let i=r[e];if(!Object.prototype.propertyIsEnumerable.call(t,i)||!Ea(a[i],o[i],n-1))return!1}return!0}function Da(e,t,n,r=Ta){let i=`on${t.charAt(0).toUpperCase()}${t.slice(1)}Change`,a=e.options[i];a&&a(e=>{let t=va(n,e);return r(e,t)?e:t})}function Oa(e){return e instanceof Function}function ka(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i.length&&r(i)})};return r(e),n}var Aa=({fn:e,memoDeps:t,onAfterCompare:n,onAfterUpdate:r,onBeforeCompare:i,onBeforeUpdate:a})=>{let o=[],s;return c=>{i?.();let l=t?.(c),u=!l||l.length!==o?.length;if(!u&&l){for(let e=0;e<l.length;e++)if(l[e]!==o[e]){u=!0;break}}return n?.(u),u?(o=l,a?.(),s=e(...l??[]),r?.(s),s):s}};function ja(e){let t=!1;return()=>{if(!t){t=!0;return}e()}}function Ma({feature:e,fnName:t,objectId:n,onAfterUpdate:r,table:i,...a}){let o=()=>{if(!r)return;let{schedule:e,untrack:t}=i._reactivity;e(()=>t(()=>r()))},s={onAfterUpdate:()=>{o()}};return Aa({...a,...s})}function Na(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function Z(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=Na(r);t[n]=a?Ma({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function Pa(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=Na(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=Ma({memoDeps:e=>o(t,e),fn:(...e)=>a(t,...e),fnName:s,objectId:t.id,table:n,feature:e})}return this[i](...t)}}else t[r]=function(...e){return a(this,...e)}}}function Q(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function Fa(e){return e.row.getValue(e.column.id)}function Ia(e){return e.getValue()??e.table.options.renderFallbackValue}function La(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var Ra={assignCellPrototype:(e,t)=>{Pa(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>Fa(e)},cell_renderValue:{fn:e=>Ia(e)},cell_getContext:{fn:e=>La(e),memoDeps:e=>[e]}})}};function za(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignHeaderPrototype?.(e._headerPrototype,e)}return e._headerPrototype}function Ba(e,t,n){let r=za(e),i=Object.create(r);i.colSpan=0,i.column=t,i.depth=n.depth,i.headerGroup=null,i.id=n.id??t.id,i.index=n.index,i.isPlaceholder=!!n.isPlaceholder,i.placeholderId=n.placeholderId,i.rowSpan=0,i.subHeaders=[];let a=e._headerInstanceInitFns;for(let e=0;e<a.length;e++)a[e](i);return i}function Va(){return{start:[],end:[]}}function Ha(){return X()}function Ua(e,t){Wa(e)&&Xa(e.table,n=>{let r=Object.assign(X(),n),i=t??!Q(e,`getIsVisible`,$),a=e.getLeafColumns();for(let e=0;e<a.length;e++){let t=a[e];Wa(t)&&(r[t.id]=i)}return r})}function $(e){let t=e.table.atoms.columnVisibility?.get();if(!t)return!0;let n=e.columns;return n.length?n.some(e=>Q(e,`getIsVisible`,$)):(ba(t,e.id)?t[e.id]:void 0)??!0}function Wa(e){return(e.columnDef.enableHiding??!0)&&(e.table.options.enableHiding??!0)}function Ga(e){return t=>{Ua(e,t.target.checked)}}function Ka(e){let t=e.getAllCells(),n=[];for(let e=0;e<t.length;e++){let r=t[e];Q(r.column,`getIsVisible`,$)&&n.push(r)}let{start:r,end:i}=e.table.atoms.columnPinning?.get()??Va();if(!r.length&&!i.length)return n;let a=Q(e,`getVisibleCellsByColumnId`,qa),o=[];for(let e=0;e<r.length;e++){let t=a[r[e]];t&&o.push(t)}let s=[];for(let e=0;e<i.length;e++){let t=a[i[e]];t&&s.push(t)}let c=[];for(let e=0;e<n.length;e++){let t=n[e],a=t.column.id;!r.includes(a)&&!i.includes(a)&&c.push(t)}return[...o,...c,...s]}function qa(e){let t=X(),n=e.getAllCells();for(let e=0;e<n.length;e++){let r=n[e];Q(r.column,`getIsVisible`,$)&&(t[r.column.id]=r)}return t}function Ja(e){return e.getAllFlatColumns().filter(e=>Q(e,`getIsVisible`,$))}function Ya(e){return e.getAllLeafColumns().filter(e=>Q(e,`getIsVisible`,$))}function Xa(e,t){Da(e,`columnVisibility`,t)}function Za(e,t){Xa(e,t?X():Object.assign(X(),Y(e.initialState.columnVisibility??{})))}function Qa(e,t){t??=!$a(e);let n=X(),r=e.getAllLeafColumns();for(let e=0;e<r.length;e++){let i=r[e];n[i.id]=t||!Wa(i)}Xa(e,n)}function $a(e){return!e.getAllLeafColumns().some(e=>!Q(e,`getIsVisible`,$))}function eo(e){return e.getAllLeafColumns().some(e=>Q(e,`getIsVisible`,$))}function to(e){return t=>{Qa(e,t.target.checked)}}function no(e,t=1){let n=t;for(let r=0;r<e.length;r++){let i=e[r];Q(i,`getIsVisible`,$)&&i.columns.length&&(n=Math.max(n,no(i.columns,t+1)))}return n}function ro(e,t){return e?`${e}_${t}`:String(t)}function io(e,t,n,r){let i=e??``;return t&&(i=i?`${i}_${t}`:String(t)),n&&(i=i?`${i}_${n}`:n),r&&(i=i?`${i}_${r}`:r),i}function ao(e,t){let n=0;for(let r=0;r<e.length;r++)e[r].column===t&&n++;return n}function oo(e,t,n,r,i,a){let o={depth:t,id:ro(r,t),headers:[]},s=[];for(let i=0;i<e.length;i++){if(!(i in e))continue;let a=e[i],c=s[s.length-1],l=a.column.depth===o.depth,u,d=!1;if(l&&a.column.parent?u=a.column.parent:(u=a.column,d=!0),c&&c.column===u)c.subHeaders.push(a);else{let e=Ba(n,u,{id:io(r,t,u.id,a.id),isPlaceholder:d,placeholderId:d?String(ao(s,u)):void 0,depth:t,index:s.length});e.subHeaders.push(a),s.push(e)}o.headers.push(a),a.headerGroup=o}for(let e=0;e<a.length;e++)a[e](o);i.push(o),t>0&&oo(s,t-1,n,r,i,a)}function so(e){for(let t=0;t<e.length;t++){let n=e[t];if(!Q(n.column,`getIsVisible`,$))continue;let r=0;if(n.subHeaders.length){so(n.subHeaders);for(let e=0;e<n.subHeaders.length;e++){let t=n.subHeaders[e];Q(t.column,`getIsVisible`,$)&&(r+=t.colSpan)}}else r=1;if(n.colSpan=r,n.isPlaceholder&&n.subHeaders.length===1&&n.subHeaders[0].column===n.column){let e=1,t=n.subHeaders[0];for(;t;)t.rowSpan=0,e++,t=t.subHeaders.length===1&&t.subHeaders[0].column===n.column?t.subHeaders[0]:void 0;n.rowSpan=e}else n.rowSpan=1}}function co(e,t,n,r){let i=no(e),a=[],o=n._headerGroupInstanceInitFns,s=Array(t.length);for(let e=0;e<t.length;e++)e in t&&(s[e]=Ba(n,t[e],{depth:i,index:e}));return oo(s,i-1,n,r,a,o),a.reverse(),so(a[0]?.headers??[]),a}function lo(e){if(!e._columnPrototype){e._columnPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignColumnPrototype?.(e._columnPrototype,e)}return e._columnPrototype}function uo(e,t,n,r){let i={...e.getDefaultColumnDef(),...t},a=i.accessorKey,o=a===void 0?void 0:String(a),s=i.id??o?.replaceAll(`.`,`_`)??(typeof i.header==`string`?i.header:void 0),c;if(i.accessorFn)c=i.accessorFn;else if(a!==void 0){if(typeof a==`string`&&a.includes(`.`)){let e=a.split(`.`);c=t=>{let n=t;for(let t=0;t<e.length;t++){let r=e[t];n=n?.[r]}return n}}else c=e=>e[i.accessorKey]}if(!s)throw Error();let l=lo(e),u=Object.create(l);u.accessorFn=c,u.columnDef=i,u.columns=[],u.depth=n,u.id=`${String(s)}`,u.parent=r;let d=e._columnInstanceInitFns;for(let e=0;e<d.length;e++)d[e](u);return u}function fo(e){let t=e.atoms.columnOrder?.get();return n=>{let r=[];if(!t?.length)r=n;else{let e=new Map;for(let t=0;t<n.length;t++){let r=n[t];e.set(r.id,r)}for(let n=0;n<t.length;n++){let i=t[n],a=e.get(i);a&&(r.push(a),e.delete(i))}for(let t=0;t<n.length;t++){let i=n[t];e.has(i.id)&&r.push(i)}}return po(e,r)}}function po(e,t){let n=e.atoms.grouping?.get()??[],{groupedColumnMode:r}=e.options;if(!n.length||!r)return t;let i=t.filter(e=>!n.includes(e.id));if(r===`remove`)return i;let a=new Map;for(let e=0;e<t.length;e++){let n=t[e];a.set(n.id,n)}let o=[];for(let e=0;e<n.length;e++){let t=a.get(n[e]);t&&o.push(t)}return[...o,...i]}function mo(e){return[e,...e.columns.flatMap(e=>e.getFlatColumns())]}function ho(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return Q(e.table,`getOrderColumns`,fo)(t)}return[e]}function go(e){return{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>e.renderValue()?.toString?.()??null,...Object.values(e._features).reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef?.()),{}),...e.options.defaultColumn}}function _o(e,t,n,r=0){let i=Array(t.length);for(let a=0;a<t.length;a++){if(!(a in t))continue;let o=t[a],s=uo(e,o,r,n),c=o;s.columns=c.columns?_o(e,c.columns,s,r+1):[],i[a]=s}return i}function vo(e){return _o(e,e.options.columns)}function yo(e){return e.getAllColumns().flatMap(e=>e.getFlatColumns())}function bo(e){let t=X(),n=e.getAllFlatColumns();for(let e=0;e<n.length;e++){let r=n[e];t[r.id]=r}return t}function xo(e){let t=e.getAllColumns().flatMap(e=>e.getLeafColumns());return Q(e,`getOrderColumns`,fo)(t)}function So(e){let t=X(),n=e.getAllLeafColumns();for(let e=0;e<n.length;e++){let r=n[e];t[r.id]=r}return t}function Co(e,t){return e.getAllFlatColumnsById()[t]}var wo={assignColumnPrototype:(e,t)=>{Pa(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>mo(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>ho(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{Z(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>go(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>vo(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>yo(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>bo(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>xo(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>So(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>Co(e,t)}})}};function To(e,t){for(let n=0;n<e.subHeaders.length;n++)To(e.subHeaders[n],t);t.push(e)}function Eo(e){let t=[];return To(e,t),t}function Do(e){return{column:e.column,header:e,table:e.column.table}}function Oo(e){let{start:t,end:n}=e.atoms.columnPinning?.get()??Va(),r=e.getAllColumns(),i=Q(e,`getVisibleLeafColumns`,Ya);if(!t.length&&!n.length)return co(r,i,e);let a=e.getAllLeafColumnsById(),o=[];for(let e=0;e<t.length;e++){let n=a[t[e]];n&&Q(n,`getIsVisible`,$)&&o.push(n)}let s=[];for(let e=0;e<n.length;e++){let t=a[n[e]];t&&Q(t,`getIsVisible`,$)&&s.push(t)}let c=i.filter(e=>!t.includes(e.id)&&!n.includes(e.id));return co(r,[...o,...c,...s],e)}function ko(e){return[...e.getHeaderGroups()].reverse()}function Ao(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e<t.length;e++){let r=t[e].headers;for(let e=0;e<r.length;e++)n.push(r[e])}return n}function jo(e){let t=e.getHeaderGroups()[0]?.headers??[],n=[];for(let e=0;e<t.length;e++){let r=t[e].getLeafHeaders();for(let e=0;e<r.length;e++)n.push(r[e])}return n}var Mo={assignHeaderPrototype:(e,t)=>{Pa(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>Eo(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>Do(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{Z(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>Oo(e),memoDeps:()=>[e.options.columns,e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.atoms.columnPinning?.get(),e.atoms.columnVisibility?.get(),e.options.groupedColumnMode]},table_getFooterGroups:{fn:()=>ko(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>Ao(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>jo(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function No(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignRowPrototype?.(e._rowPrototype,e)}return e._rowPrototype}var Po=(e,t,n,r,i,a,o)=>{let s=No(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=X(),c._valuesCache=X(),c.depth=i,c.id=t,c.index=r,c.original=n,c.parentId=o,c.subRows=a??[];let l=e._rowInstanceInitFns;for(let e=0;e<l.length;e++)l[e](c);return c},Fo=/([0-9]+)/gm;function Io(e){let t=Object.assign((e,n,r)=>{let i=e.getValue(r),a=n.getValue(r),o=t.resolveDataValue;return o&&(i=o(i),a=o(a)),t.sort(i,a,e,n,r)},e);return t}Io({resolveDataValue:e=>Bo(e).toLowerCase(),sort:(e,t)=>Vo(e,t)}),Io({resolveDataValue:e=>Bo(e),sort:(e,t)=>Vo(e,t)}),Io({resolveDataValue:e=>Bo(e).toLowerCase(),sort:(e,t)=>Ro(e,t)}),Io({resolveDataValue:e=>Bo(e),sort:(e,t)=>Ro(e,t)}),Io({resolveDataValue:e=>zo(e),sort:(e,t)=>e>t?1:e<t?-1:0});var Lo=Io({sort:(e,t)=>Ro(e,t)});function Ro(e,t){return e===t?0:e>t?1:-1}function zo(e){return e instanceof Date?e.getTime():e}function Bo(e){return typeof e==`number`?isNaN(e)||e===1/0||e===-1/0?``:String(e):typeof e==`string`?e:``}function Vo(e,t){let n=0,r=0,i=e.length,a=t.length;for(;n<i&&r<a;){let i=Ho(e.charCodeAt(n)),a=Ho(t.charCodeAt(r)),o=Uo(e,n,i),s=Uo(t,r,a);if(!i&&!a){let i=Wo(e,n,o,t,r,s);if(i)return i;n=o,r=s;continue}if(i!==a)return i?1:-1;let c=Go(e,n,o,t,r,s);if(c)return c;n=o,r=s}return qo(e,n)-qo(t,r)}function Ho(e){return e>=48&&e<=57}function Uo(e,t,n){let r=t+1;for(;r<e.length&&Ho(e.charCodeAt(r))===n;)r++;return r}function Wo(e,t,n,r,i,a){let o=n-t,s=a-i,c=o<s?o:s;for(let n=0;n<c;n++){let a=e.charCodeAt(t+n),o=r.charCodeAt(i+n);if(a>o)return 1;if(o>a)return-1}return o>s?1:s>o?-1:0}function Go(e,t,n,r,i,a){let o=t;for(;o<n&&e.charCodeAt(o)===48;)o++;let s=i;for(;s<a&&r.charCodeAt(s)===48;)s++;let c=n-o,l=a-s;if(c===0&&l===0)return 0;if(c<=15&&l<=15){let t=Ko(e,o,n),i=Ko(r,s,a);return t>i?1:i>t?-1:0}let u=parseInt(e.slice(t,n),10),d=parseInt(r.slice(i,a),10);return u>d?1:d>u?-1:0}function Ko(e,t,n){let r=0;for(let i=t;i<n;i++)r=r*10+e.charCodeAt(i)-48;return r}function qo(e,t){let n=0,r=t;for(;r<e.length;)n++,r=Uo(e,r,Ho(e.charCodeAt(r)));return n}function Jo(){return[]}function Yo(e,t){Da(e,`cellSelection`,t?Jo():Y(e.initialState.cellSelection)??Jo())}function Xo(e){e.atoms.cellSelection&&(e.options.autoResetAll??e.options.autoResetCellSelection??!0)&&e._reactivity.schedule(()=>Yo(e))}function Zo(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>Qo(e))}function Qo(e,t){let n=e.initialState.expanded;Da(e,`expanded`,t?X():n===!0||Object.assign(X(),Y(n??{})))}function $o(e){let t=e.table.atoms.expanded?.get()??{};return!!(e.table.options.getIsRowExpanded?.(e)??(t===!0||es(t,e.id)))}function es(e,t){return!!(e&&e!==!0&&ba(e,t)&&e[t])}var ts=0,ns=10;function rs(){return{pageIndex:ts,pageSize:ns}}function is(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??ts)===ts)return;cs(e,!0)}}function as(e,t){Da(e,`pagination`,t)}function os(e,t){as(e,t?rs():Y(e.initialState.pagination??rs()))}function ss(e,t){as(e,n=>{let r=va(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})}function cs(e,t){ss(e,t?ts:e.initialState.pagination?.pageIndex??ts)}function ls(e,t){us(e,t?ns:e.initialState.pagination?.pageSize??ns)}function us(e,t){as(e,e=>{let n=Math.max(1,va(t,e.pageSize)),r=e.pageSize===1/0?0:e.pageSize*e.pageIndex,i=n===1/0?0:Math.floor(r/n);return{...e,pageIndex:i,pageSize:n}})}function ds(e){let t=ys(e),n=[];return t&&t>0&&(n=[...Array(t)].fill(null).map((e,t)=>t)),n}function fs(e){return(e.atoms.pagination?.get()?.pageIndex??0)>0}function ps(e){let t=e.atoms.pagination?.get()?.pageIndex??ts,n=ys(e);return n===-1||n!==0&&t<n-1}function ms(e){let t=e.atoms.pagination?.get()?.pageIndex??ts,n=ys(e);return Number.isFinite(n)&&n>0&&t<n-1}function hs(e){return ss(e,e=>e-1)}function gs(e){return ss(e,e=>e+1)}function _s(e){return ss(e,0)}function vs(e){let t=ys(e);if(!(!Number.isFinite(t)||t<=0))return ss(e,t-1)}function ys(e){let t=e.options.pageCount;if(t!=null)return t;let n=bs(e),r=e.atoms.pagination?.get()?.pageSize??ns;return r===1/0&&Number.isFinite(n)&&n>0?1:Math.ceil(n/r)}function bs(e){return e.options.rowCount??e.getPrePaginatedRowModel().rows.length}function xs(){return[]}function Ss(e,t){Da(e,`sorting`,t)}function Cs(e,t){Ss(e,t?[]:Y(e.initialState.sorting??[]))}function ws(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&Cs(e)}function Ts(e){let t=e.table._rowModelFns.sortFns,n=e.table.getFilteredRowModel().flatRows.slice(0,10),r,i=!1;for(let t=0;t<n.length;t++){let a=n[t].getValue(e.id);if(Object.prototype.toString.call(a)===`[object Date]`){r=`datetime`;break}if(typeof a==`string`&&(i=!0,a.split(Fo).length>1)){r=`alphanumeric`;break}}if(!r&&i&&(r=`text`),r){let e=t?.[r];if(e||r===`alphanumeric`&&(e=t?.text),e)return e}return Lo}function Es(e){let t=e.table.getFilteredRowModel().flatRows.slice(0,10);for(let n=0;n<t.length;n++){let r=t[n].getValue(e.id);if(r!=null)return typeof r==`string`?`asc`:`desc`}return`desc`}function Ds(e){let t=e.table._rowModelFns.sortFns;return Oa(e.columnDef.sortFn)?e.columnDef.sortFn:e.columnDef.sortFn===`auto`?Ts(e):t?.[e.columnDef.sortFn]??Lo}function Os(e,t,n){let r=As(e,n&&Ms(e)),i=t!==void 0;Ss(e.table,a=>{let o=a.findIndex(t=>t.id===e.id),s=o===-1?void 0:a[o],c=[],l,u=i?t:r===`desc`,d=!!(a.length&&Ms(e)&&n);return l=d?s?`toggle`:`add`:s?`toggle`:`replace`,l===`toggle`&&(i||r||(l=`remove`)),l===`add`?(c=[...a,{id:e.id,desc:u}],c.splice(0,c.length-(e.table.options.maxMultiSortColCount??2**53-1))):c=l===`toggle`?d?a.map(t=>t.id===e.id?{...t,desc:u}:t):[{id:e.id,desc:u}]:l===`remove`?d?a.filter(t=>t.id!==e.id):[]:[{id:e.id,desc:u}],c})}function ks(e){return e.columnDef.sortDescFirst??e.table.options.sortDescFirst??Es(e)===`desc`?`desc`:`asc`}function As(e,t){let n=ks(e),r=Ns(e);return r?r!==n&&(e.table.options.enableSortingRemoval??!0)&&(!t||(e.table.options.enableMultiRemove??!0))?!1:r===`desc`?`asc`:`desc`:n}function js(e){return(e.columnDef.enableSorting??!0)&&(e.table.options.enableSorting??!0)&&!!e.accessorFn}function Ms(e){return e.columnDef.enableMultiSort??e.table.options.enableMultiSort??!!e.accessorFn}function Ns(e){let t=e.table.atoms.sorting?.get()?.find(t=>t.id===e.id);return t?t.desc?`desc`:`asc`:!1}function Ps(e){return e.table.atoms.sorting?.get()?.findIndex(t=>t.id===e.id)??-1}function Fs(e){Ss(e.table,t=>t.length?t.filter(t=>t.id!==e.id):[])}function Is(e){let t=js(e);return n=>{t&&Os(e,void 0,Ms(e)?e.table.options.isMultiSortEvent?.(n):!1)}}function Ls(){return e=>Ma({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>zs(e,e.options.data),onAfterUpdate:ja(()=>{Zo(e),is(e),ws(e),Xo(e)})})}function Rs(e,t,n,r=0,i){let a=[];for(let o=0;o<n.length;o++){let s=n[o],c=Po(e,e.getRowId(s,o,i),s,o,r,void 0,i?.id);t.flatRows.push(c),t.rowsById[c.id]=c,a.push(c),e.options.getSubRows&&(c.originalSubRows=e.options.getSubRows(s,o),c.originalSubRows?.length&&(c.subRows=Rs(e,t,c.originalSubRows,r+1,c)))}return a}function zs(e,t){let n={rows:[],flatRows:[],rowsById:X()};return n.rows=Rs(e,n,t),n}function Bs(e){return e._rowModels.coreRowModel||(e._rowModels.coreRowModel=e.options.features.coreRowModel?.(e)??Ls()(e)),e._rowModels.coreRowModel()}function Vs(e){return e.getCoreRowModel()}function Hs(e){return e._rowModels.filteredRowModel||(e._rowModels.filteredRowModel=e.options.features.filteredRowModel?.(e)),e.options.manualFiltering||!e._rowModels.filteredRowModel?e.getPreFilteredRowModel():e._rowModels.filteredRowModel()}function Us(e){return e.getFilteredRowModel()}function Ws(e){return e._rowModels.groupedRowModel||(e._rowModels.groupedRowModel=e.options.features.groupedRowModel?.(e)),e.options.manualGrouping||!e._rowModels.groupedRowModel?e.getPreGroupedRowModel():e._rowModels.groupedRowModel()}function Gs(e){return e.getGroupedRowModel()}function Ks(e){return e._rowModels.sortedRowModel||(e._rowModels.sortedRowModel=e.options.features.sortedRowModel?.(e)),e.options.manualSorting||!e._rowModels.sortedRowModel?e.getPreSortedRowModel():e._rowModels.sortedRowModel()}function qs(e){return e.getSortedRowModel()}function Js(e){return e._rowModels.expandedRowModel||(e._rowModels.expandedRowModel=e.options.features.expandedRowModel?.(e)),e.options.manualExpanding||!e._rowModels.expandedRowModel?e.getPreExpandedRowModel():e._rowModels.expandedRowModel()}function Ys(e){return e.getExpandedRowModel()}function Xs(e){return e._rowModels.paginatedRowModel||(e._rowModels.paginatedRowModel=e.options.features.paginatedRowModel?.(e)),e.options.manualPagination||!e._rowModels.paginatedRowModel?e.getPrePaginatedRowModel():e._rowModels.paginatedRowModel()}function Zs(e){return e.getPaginatedRowModel()}var Qs={constructTableAPIs:e=>{Z(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>Bs(e)},table_getPreFilteredRowModel:{fn:()=>Vs(e)},table_getFilteredRowModel:{fn:()=>Hs(e)},table_getPreGroupedRowModel:{fn:()=>Us(e)},table_getGroupedRowModel:{fn:()=>Ws(e)},table_getPreSortedRowModel:{fn:()=>Gs(e)},table_getSortedRowModel:{fn:()=>Ks(e)},table_getPreExpandedRowModel:{fn:()=>qs(e)},table_getExpandedRowModel:{fn:()=>Js(e)},table_getPrePaginatedRowModel:{fn:()=>Ys(e)},table_getPaginatedRowModel:{fn:()=>Xs(e)},table_getRowModel:{fn:()=>Zs(e)}})}};function $s(e){if(!e._cellPrototype){e._cellPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignCellPrototype?.(e._cellPrototype,e)}return e._cellPrototype}function ec(e,t,n){let r=$s(n),i=Object.create(r);i.column=e,i.id=`${t.id}_${e.id}`,i.row=t;let a=n._cellInstanceInitFns;for(let e=0;e<a.length;e++)a[e](i);return i}function tc(e){let t=e.table.getRowsInDisplayOrder(),n=e._displayIndexCache;return t[n]===e?n:-1}function nc(e){let t=e.getPrePaginatedRowModel().rows;if(e.options.paginateExpandedRows===!1){let e=[],n=t=>{t._displayIndexCache=e.length,e.push(t),t.subRows.length&&t.getIsExpanded?.()&&t.subRows.forEach(n)};return t.forEach(n),e}for(let e=0;e<t.length;e++)t[e]._displayIndexCache=e;return t}function rc(e,t){if(ba(e._valuesCache,t))return e._valuesCache[t];let n=e.table.getColumn(t);if(n?.accessorFn)return e._valuesCache[t]=n.accessorFn(e.original,e.index),e._valuesCache[t]}function ic(e,t){if(ba(e._uniqueValuesCache,t))return e._uniqueValuesCache[t];let n=e.table.getColumn(t);if(n?.accessorFn)return n.columnDef.getUniqueValues?(e._uniqueValuesCache[t]=n.columnDef.getUniqueValues(e.original,e.index),e._uniqueValuesCache[t]):(e._uniqueValuesCache[t]=[e.getValue(t)],e._uniqueValuesCache[t])}function ac(e,t){return e.getValue(t)??e.table.options.renderFallbackValue}function oc(e){return ka(e.subRows,e=>e.subRows)}function sc(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e<t.length;e++)n=Math.max(n,t[e].depth);return n}function cc(e){if(e.parentId)return e.table.getCoreRowModel().rowsById[e.parentId]??e.table.getRow(e.parentId,!0)}function lc(e){let t=[],n=e;for(;;){let e=n.getParentRow();if(!e)break;t.push(e),n=e}return t.reverse()}function uc(e){let t=e.table.getAllLeafColumns(),n=e._cellsCache;n||=e._cellsCache=new WeakMap;let r=Array(t.length);for(let i=0;i<t.length;i++){let a=t[i],o=n.get(a);o||(o=ec(a,e,e.table),n.set(a,o)),r[i]=o}return r}function dc(e){let t=X(),n=e.getAllCells();for(let e=0;e<n.length;e++){let r=n[e];t[r.column.id]=r}return t}function fc(e,t,n,r){return t.options.getRowId?.(e,n,r)??(r?`${r.id}.${n}`:String(n))}function pc(e,t,n){let r=(n?e.getPrePaginatedRowModel():e.getRowModel()).rowsById[t];if(!r&&(r=e.getCoreRowModel().rowsById[t],!r))throw Error();return r}var mc={assignRowPrototype:(e,t)=>{Pa(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>tc(e)},row_getAllCellsByColumnId:{fn:e=>dc(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>uc(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>oc(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>cc(e)},row_getParentRows:{fn:e=>lc(e)},row_getUniqueValues:{fn:(e,t)=>ic(e,t)},row_getValue:{fn:(e,t)=>rc(e,t)},row_renderValue:{fn:(e,t)=>ac(e,t)}})},constructTableAPIs:e=>{Z(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>nc(e),memoDeps:()=>[e.getPrePaginatedRowModel().rows,e.options.paginateExpandedRows,e.options.paginateExpandedRows===!1?e.atoms.expanded?.get():void 0]},table_getRowId:{fn:(t,n,r)=>fc(t,e,n,r)},table_getRow:{fn:(t,n)=>pc(e,t,n)},table_getMaxSubRowDepth:{fn:()=>sc(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function hc(e,t,n=(e,t)=>e===t){let r=t===void 0?e.options.state:t;e._reactivity.batch(()=>{if(r)for(let t in r){let i=e.baseAtoms[t];if(!i)continue;let a=r[t],o=a===void 0?e.initialState[t]:a;n(e._reactivity.untrack(()=>i.get()),o)||i.set(()=>o)}})}function gc(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{hc(e,t,n),e._reactivity.commit?.()})}function _c(e){let t=Y(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;r<n.length;r++){let i=n[r];e.baseAtoms[i].set(t[i])}});let n=Object.values(e._features);for(let t=0;t<n.length;t++)n[t].resetTableInstanceData?.(e)}function vc(e,t){let{features:n,atoms:r,initialState:i}=e.options;if(!e.options.mergeOptions)return{...e.options,...t,features:n,atoms:r,initialState:i};let a=e.options.mergeOptions(e.options,t),o={...Object.getOwnPropertyDescriptors(a)};return Object.defineProperties(Object.create(Object.getPrototypeOf(a)),{...o,features:{value:n,enumerable:!0,configurable:!0,writable:!0},atoms:{value:r,enumerable:!0,configurable:!0,writable:!0},initialState:{value:i,enumerable:!0,configurable:!0,writable:!0}})}function yc(e,t,n){let r=vc(e,va(t,e.options));e.optionsStore?e.optionsStore.set(()=>r):e.options=r,n?.syncExternalState!==!1&&gc(e,r.state??null)}var bc={coreCellsFeature:Ra,coreColumnsFeature:wo,coreHeadersFeature:Mo,coreRowModelsFeature:Qs,coreRowsFeature:mc,coreTablesFeature:{constructTableAPIs:e=>{Z(`coreTablesFeature`,e,{table_reset:{fn:()=>_c(e)},table_setOptions:{fn:t=>yc(e,t)}})}}};function xc(e){return e}function Sc(e,t={}){return Object.values(e).forEach(e=>{t=e.getInitialState?.(t)??t}),Y(t)}function Cc(e){let t=e.features.coreReactivityFeature,{aggregationFns:n,columnMeta:r,coreRowModel:i,expandedRowModel:a,facetedMinMaxValues:o,facetedRowModel:s,facetedUniqueValues:c,filterFns:l,filterMeta:u,filteredRowModel:d,groupedRowModel:f,paginatedRowModel:p,sortFns:m,sortedRowModel:h,tableMeta:g,..._}=e.features,v={_cellInstanceInitFns:[],_columnInstanceInitFns:[],_features:{...bc,..._},_headerGroupInstanceInitFns:[],_headerInstanceInitFns:[],_reactivity:t,_rowInstanceInitFns:[],_rowModelFns:{aggregationFns:n,filterFns:l,sortFns:m},_rowModels:{},atoms:{},baseAtoms:{}},y=Object.values(v._features),b={...y.reduce((e,t)=>Object.assign(e,t.getDefaultTableOptions?.(v)),{}),...e};if(t.wrapExternalAtoms&&b.atoms)for(let[e,n]of Object.entries(b.atoms)){let r=n,i=t.createWritableAtom(r.get(),{debugName:`externalAtom/${e}`});b.atoms[e]=i;let a=!1,o=r.subscribe(e=>{a||i.set(e)}),s=i.subscribe(e=>{a=!0,r.set(e),a=!1});t.addSubscription(o),t.addSubscription(s)}t.createOptionsStore?(v.optionsStore=t.createWritableAtom(b,{debugName:`table/optionsStore`}),Object.defineProperty(v,"options",{configurable:!0,enumerable:!0,get(){return v.optionsStore.get()},set(e){v.optionsStore.set(()=>e)}})):v.options=b,v.initialState=Sc(v._features,v.options.initialState);let x=Object.keys(v.initialState);for(let e=0;e<x.length;e++){let n=x[e];v.baseAtoms[n]=t.createWritableAtom(v.initialState[n],{debugName:`table/baseAtoms/${n}`}),v.atoms[n]=t.createReadonlyAtom(()=>{let e=v.options,t=e.atoms?.[n],r=t?t.get():v.baseAtoms[n].get();if(t)return r;let i=e.state;if(i&&ba(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}hc(v),v.store=ma(t.createReadonlyAtom(()=>{let e={};for(let t=0;t<x.length;t++){let n=x[t];e[n]=v.atoms[n].get()}return e},{compare:ca,debugName:`table/store`}));for(let e=0;e<y.length;e++){let t=y[e];t.initTableInstanceData?.(v),t.initCellInstanceData&&v._cellInstanceInitFns.push(t.initCellInstanceData.bind(t)),t.initColumnInstanceData&&v._columnInstanceInitFns.push(t.initColumnInstanceData.bind(t)),t.initHeaderGroupInstanceData&&v._headerGroupInstanceInitFns.push(t.initHeaderGroupInstanceData.bind(t)),t.initHeaderInstanceData&&v._headerInstanceInitFns.push(t.initHeaderInstanceData.bind(t)),t.initRowInstanceData&&v._rowInstanceInitFns.push(t.initRowInstanceData.bind(t)),t.constructTableAPIs?.(v)}return v}var wc={getInitialState:e=>({columnVisibility:Ha(),...e}),getDefaultTableOptions:e=>({onColumnVisibilityChange:xa(`columnVisibility`,e)}),assignColumnPrototype:(e,t)=>{Pa(`columnVisibilityFeature`,e,t,{column_getIsVisible:{fn:e=>$(e),memoDeps:e=>[t.options.columns,t.atoms.columnVisibility?.get(),e.columns]},column_getCanHide:{fn:e=>Wa(e)},column_getToggleVisibilityHandler:{fn:e=>Ga(e)},column_toggleVisibility:{fn:(e,t)=>Ua(e,t)}})},assignRowPrototype:(e,t)=>{Pa(`columnVisibilityFeature`,e,t,{row_getVisibleCells:{fn:e=>Ka(e),memoDeps:e=>[e.getAllCells(),t.atoms.columnPinning?.get(),t.atoms.columnVisibility?.get()]},row_getVisibleCellsByColumnId:{fn:e=>qa(e),memoDeps:e=>[e.getAllCells(),t.atoms.columnVisibility?.get()]}})},constructTableAPIs:e=>{Z(`columnVisibilityFeature`,e,{table_getVisibleFlatColumns:{fn:()=>Ja(e),memoDeps:()=>[e.atoms.columnVisibility?.get(),e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getVisibleLeafColumns:{fn:()=>Ya(e),memoDeps:()=>[e.atoms.columnVisibility?.get(),e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_setColumnVisibility:{fn:t=>Xa(e,t)},table_resetColumnVisibility:{fn:t=>Za(e,t)},table_toggleAllColumnsVisible:{fn:t=>Qa(e,t)},table_getIsAllColumnsVisible:{fn:()=>$a(e)},table_getIsSomeColumnsVisible:{fn:()=>eo(e)},table_getToggleAllColumnsVisibilityHandler:{fn:()=>to(e)}})}},Tc={getInitialState:e=>({...e,pagination:{...rs(),...e.pagination}}),getDefaultTableOptions:e=>({onPaginationChange:xa(`pagination`,e)}),constructTableAPIs:e=>{Z(`rowPaginationFeature`,e,{table_autoResetPageIndex:{fn:()=>is(e)},table_setPagination:{fn:t=>as(e,t)},table_resetPagination:{fn:t=>os(e,t)},table_setPageIndex:{fn:t=>ss(e,t)},table_resetPageIndex:{fn:t=>cs(e,t)},table_setPageSize:{fn:t=>us(e,t)},table_getPageCount:{fn:()=>ys(e)},table_resetPageSize:{fn:t=>ls(e,t)},table_getPageOptions:{fn:()=>ds(e)},table_getCanPreviousPage:{fn:()=>fs(e)},table_getCanNextPage:{fn:()=>ps(e)},table_getCanLastPage:{fn:()=>ms(e)},table_previousPage:{fn:()=>hs(e)},table_nextPage:{fn:()=>gs(e)},table_firstPage:{fn:()=>_s(e)},table_lastPage:{fn:()=>vs(e)},table_getRowCount:{fn:()=>bs(e)}})}},Ec={getInitialState(e){return{sorting:xs(),...e}},getDefaultColumnDef(){return{sortFn:`auto`,sortUndefined:1}},getDefaultTableOptions(e){return{autoResetSorting:!1,onSortingChange:xa(`sorting`,e),isMultiSortEvent:e=>e.shiftKey}},assignColumnPrototype(e,t){Pa(`rowSortingFeature`,e,t,{column_getAutoSortFn:{fn:e=>Ts(e)},column_getAutoSortDir:{fn:e=>Es(e)},column_getSortFn:{fn:e=>Ds(e)},column_toggleSorting:{fn:(e,t,n)=>Os(e,t,n)},column_getFirstSortDir:{fn:e=>ks(e)},column_getNextSortingOrder:{fn:(e,t)=>As(e,t)},column_getCanSort:{fn:e=>js(e)},column_getCanMultiSort:{fn:e=>Ms(e)},column_getIsSorted:{fn:e=>Ns(e)},column_getSortIndex:{fn:e=>Ps(e)},column_clearSorting:{fn:e=>Fs(e)},column_getToggleSortingHandler:{fn:e=>Is(e)}})},constructTableAPIs(e){Z(`rowSortingFeature`,e,{table_setSorting:{fn:t=>Ss(e,t)},table_resetSorting:{fn:t=>Cs(e,t)}})}};function Dc(e){let t=[],n=e=>{t.push(e),e.subRows.length&&$o(e)&&e.subRows.forEach(n)};return e.rows.forEach(n),{rows:t,flatRows:e.flatRows,rowsById:e.rowsById}}function Oc(){return e=>{let t=e;return Ma({feature:`rowPaginationFeature`,table:t,fnName:`table.getPaginatedRowModel`,memoDeps:()=>[t.getPrePaginatedRowModel(),t.atoms.pagination?.get(),t.options.paginateExpandedRows?void 0:t.atoms.expanded?.get()],fn:()=>kc(t)})}}function kc(e){let t=e.getPrePaginatedRowModel(),n=e.atoms.pagination?.get();if(!t.rows.length)return t;let{pageSize:r,pageIndex:i}=n??rs(),{rows:a,flatRows:o,rowsById:s}=t,c=a;if(r!==1/0||i!==0){let e=r*i,t=e+r;c=a.slice(e,t)}let l;l=e.options.paginateExpandedRows?{rows:c,flatRows:o,rowsById:s}:Dc({rows:c,flatRows:o,rowsById:s}),l.flatRows=[];let u=new Set,d=e=>{u.has(e.id)||(u.add(e.id),l.flatRows.push(e),e.subRows.length&&e.subRows.forEach(d))};return l.rows.forEach(d),l}function Ac(){return e=>{let t=e;return Ma({feature:`rowSortingFeature`,table:t,fnName:`table.getSortedRowModel`,memoDeps:()=>[t.atoms.sorting?.get(),t.getPreSortedRowModel()],fn:()=>jc(t),onAfterUpdate:ja(()=>is(t))})}}function jc(e){let t=e.getPreSortedRowModel(),n=e.atoms.sorting?.get();if(!t.rows.length||!n?.length)return t;let r=[],i=n.filter(t=>{let n=e.getColumn(t.id);return n?js(n):!1});if(!i.length)return t;let a=[];for(let t=0;t<i.length;t++){let n=i[t],r=e.getColumn(n.id);r&&a.push({id:n.id,desc:n.desc,sortUndefined:r.columnDef.sortUndefined,invertSorting:r.columnDef.invertSorting,sortFn:Ds(r)})}let o=(e,t)=>{for(let n=0;n<a.length;n++){let r=a[n],i=r.sortUndefined,o=r.desc,s=0;if(i){let n=e.getValue(r.id),a=t.getValue(r.id),o=n===void 0,c=a===void 0;if(o&&c)continue;if(o||c){if(i===`first`)return o?-1:1;if(i===`last`)return o?1:-1;s=o?i:-i}}if(s===0&&(s=r.sortFn(e,t,r.id)),s!==0)return o&&(s*=-1),r.invertSorting&&(s*=-1),s}return e.index-t.index},s=e=>{let t=e.slice();t.sort(o);let n=!1;for(let i=0;i<t.length;i++){let a=t[i];a!==e[i]&&(n=!0);let o=r.length;if(r.push(a),a.subRows.length){let e=s(a.subRows);if(e.changed){let s=Object.create(Object.getPrototypeOf(a));ya(s,a),s.subRows=e.rows,t[i]=s,r[o]=s,n=!0}}}return{rows:t,changed:n}};return{rows:s(t.rows).rows,flatRows:r,rowsById:t.rowsById}}var Mc=typeof window>`u`?U.useEffect:U.useLayoutEffect;function Nc(e,t){let[{table:n,rootSource:r}]=(0,U.useState)(()=>{let t=Cc({...e,features:{coreReactivityFeature:_a(),...e.features}});return t.Subscribe=(e=>pa({...e,source:e.source??t.store})),t.FlexRender=Wi,{table:t,rootSource:ga(t.store,ca)}}),i=n;yc(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),s=fa(r,t,{compare:ca});return Mc(()=>{r.markCommitted(o),gc(i,a??null,ca)}),(0,U.useMemo)(()=>({...n,options:e,state:s}),[n,e,s])}var Pc=xc({columnVisibilityFeature:wc,rowSortingFeature:Ec,rowPaginationFeature:Tc,sortedRowModel:Ac(),paginatedRowModel:Oc()}),Fc=10,Ic=10,Lc=new Set([`duration`,`taskCount`,`shuffleRead`,`fetchWait`,`gcPct`,`skew`,`spill`,`findingCount`]);function Rc(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function zc(e){return e<=0?(0,G.jsx)(G.Fragment,{children:`0`}):(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[e,` `,(0,G.jsx)(ye,{label:`RETRY`,impactBand:`critical`})]})}function Bc(e,t,n){if(e<=0)return(0,G.jsx)(G.Fragment,{children:`—`});let r=T(e);if(t<=0)return(0,G.jsx)(G.Fragment,{children:r});let i=e/t;return i>.3?(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[r,` `,(0,G.jsx)(ye,{label:n===`advanced`?`${Math.round(i*100)}%`:`High`,impactBand:`critical`})]}):i>.15?(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[r,` `,(0,G.jsx)(ye,{label:n===`advanced`?`${Math.round(i*100)}%`:`Elevated`,impactBand:`info`})]}):(0,G.jsx)(G.Fragment,{children:r})}function Vc(e,t){if(!e||e<=0||!t||t<=0)return(0,G.jsx)(G.Fragment,{children:`—`});let n=t/e,r=n<.01?`${n.toExponential(1)}×`:`${n.toFixed(2)}×`;return n>2||n<.1?(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[r,` `,(0,G.jsx)(ye,{label:`extreme`,impactBand:`info`})]}):(0,G.jsx)(G.Fragment,{children:r})}function Hc(e,t){if(e<=0)return(0,G.jsx)(G.Fragment,{children:`—`});let n=t??`unclassified`;return(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[k(e),` `,(0,G.jsx)(ye,{label:te[n],impactBand:`warning`,title:ae[n]})]})}function Uc(e,t){return!e||e<=0?0:(t??0)/e}function Wc(e){let t=new Map;for(let n of e)t.has(n.type)||t.set(n.type,[]),t.get(n.type).push(n);return[...t.values()].map(e=>{let t=ce(e);return e.find(e=>e.impactBand===t)??e[0]})}function Gc({appModel:e,catalog:t,getTaskData:n,onRoute:r}){let{openStage:i}=_t(),a=M(),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)([]),[f,p]=(0,U.useState)({pageIndex:0,pageSize:Fc}),{catalogByStage:m,flaggedStageIds:h}=(0,U.useMemo)(()=>{let e=new Map,n=new Set;for(let r of t)r.stageId!=null&&(n.add(r.stageId),e.has(r.stageId)||e.set(r.stageId,[]),e.get(r.stageId).push(r));return{catalogByStage:e,flaggedStageIds:n}},[t]),g=(0,U.useMemo)(()=>{let t=[...e.stages.values()],n=o?t.filter(e=>h.has(e.id)):[...t].sort((e,t)=>(t.completedAt??0)-(t.submittedAt??0)-((e.completedAt??0)-(e.submittedAt??0))).slice(0,Ic),r=c.trim().toLowerCase();return(r?n.filter(e=>(e.name??``).toLowerCase().includes(r)||String(e.id).includes(r)):n).map(e=>({stage:e,tags:Wc(m.get(e.id)??[])}))},[e.stages,o,h,m,c]),_=A(),v=(0,U.useMemo)(()=>{if(!r)return null;let e=new Map;for(let n of t){let r=Cr(n,t);r&&e.set(n,r)}return e},[t,r]),y=(0,U.useMemo)(()=>[{id:`id`,header:`Stage`,accessorFn:e=>e.stage.id,cell:({getValue:e})=>{let t=e();return(0,G.jsx)(`button`,{type:`button`,"aria-label":`Open Stage ${t} details`,className:`inline-flex cursor-pointer items-center rounded-sm hover:underline underline-offset-2 focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:e=>{e.stopPropagation(),i(t)},children:(0,G.jsx)(`strong`,{children:t})})}},{id:`name`,header:`Operation`,accessorFn:e=>e.stage.name??``,cell:({row:e})=>{let t=e.original.stage.id;return(0,G.jsxs)(`span`,{className:`inline-flex flex-wrap items-center gap-1.5`,children:[Rc(e.original.stage.name??``,40),e.original.tags.map((e,n)=>{let i=v?v.get(e)??null:null,a=i&&r?{target:i,onRoute:r}:null,o=we(_,e)?.compact??null;return(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[a?(0,G.jsx)(`button`,{type:`button`,"aria-label":`Investigate ${a.target.findingLabel} in Stage ${t}`,title:`Investigate ${a.target.findingLabel} in Stage ${t}`,className:`inline-flex cursor-pointer items-center rounded-full hover:underline underline-offset-2 focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:e=>{e.stopPropagation(),a.onRoute(a.target)},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&e.stopPropagation()},children:(0,G.jsx)(j,{type:e.type,impactBand:e.impactBand,plainBadge:!0})}):(0,G.jsx)(j,{type:e.type,impactBand:e.impactBand}),o?(0,G.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:o}):null]},n)})]})}},{id:`type`,header:`Type`,accessorFn:e=>e.stage.stageType??``,cell:({row:e})=>(0,G.jsx)(w,{variant:`outline`,children:e.original.stage.stageType??`—`})},{id:`duration`,header:`Duration`,accessorFn:e=>(e.stage.completedAt??0)-(e.stage.submittedAt??0),cell:({getValue:e})=>(0,G.jsx)(G.Fragment,{children:T(e())})},{id:`taskCount`,header:`Tasks`,accessorFn:e=>e.stage.taskCount},{id:`retried`,header:`Retried`,accessorFn:e=>e.stage.failedTasks??0,cell:({getValue:e})=>zc(e())},{id:`shuffleRead`,header:`Shuffle Read`,accessorFn:e=>e.stage.shuffleReadBytes??0,cell:({getValue:e})=>(0,G.jsx)(G.Fragment,{children:k(e())})},{id:`fetchWait`,header:`Fetch Wait`,accessorFn:e=>e.stage.fetchWaitTime??0,cell:({row:e})=>Bc(e.original.stage.fetchWaitTime??0,e.original.stage.executorRunTime??0,a)},...a===`advanced`?[{id:`ioRatio`,header:`I/O Ratio`,accessorFn:e=>e.stage.inputBytes?(e.stage.outputBytes??0)/e.stage.inputBytes:0,cell:({row:e})=>Vc(e.original.stage.inputBytes??0,e.original.stage.outputBytes??0)}]:[],{id:`spill`,header:`Spill (mem)`,accessorFn:e=>e.stage.memoryBytesSpilled??0,cell:({row:e})=>Hc(e.original.stage.memoryBytesSpilled??0,e.original.stage.spillClassification)},...a===`advanced`?[{id:`gcPct`,header:`GC%`,accessorFn:e=>e.stage.gcPct??0,cell:({getValue:e})=>(0,G.jsxs)(G.Fragment,{children:[e().toFixed(1),`%`]})},{id:`skew`,header:`Skew P95/median`,accessorFn:e=>Uc(e.stage.taskDurationP50,e.stage.taskDurationP95),cell:({getValue:e})=>{let t=e();return(0,G.jsx)(G.Fragment,{children:t>0?`${t.toFixed(1)}×`:`—`})}}]:[],{id:`findingCount`,header:`Findings`,accessorFn:e=>e.tags.length,cell:({getValue:e})=>{let t=e();return(0,G.jsx)(G.Fragment,{children:t>0?t:`—`})}}],[t,r,v,i,a,_]),b=Nc({features:Pc,data:g,columns:y,state:{sorting:u,pagination:f},sortDescFirst:!1,onSortingChange:d,onPaginationChange:p});function x(){s(e=>!e),d([]),p({pageIndex:0,pageSize:Fc})}let S=e=>e===`asc`?` ▲`:e===`desc`?` ▼`:``,C=e=>e===`asc`?`ascending`:e===`desc`?`descending`:`none`;return(0,G.jsx)(B,{title:`Stage Summary`,children:(0,G.jsxs)(`div`,{className:`space-y-3`,children:[(0,G.jsx)(Ae,{type:`text`,value:c,onChange:e=>{l(e.target.value),p(e=>({...e,pageIndex:0}))},placeholder:`Filter by stage name or ID…`,"aria-label":`Filter by stage name or ID`,className:`max-w-xs`}),(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Scroll sideways to see all columns →`}),(0,G.jsx)(L,{type:`button`,variant:`outline`,size:`sm`,onClick:x,children:o?`Top ${Ic} by duration`:`Problems only`})]}),(0,G.jsxs)(`p`,{className:`sr-only`,role:`status`,"aria-live":`polite`,children:[`Showing `,g.length,` stage`,g.length===1?``:`s`,`: `,` `,o?`problems only`:`top ${Ic} by duration`,`.`]}),(0,G.jsxs)(bt,{children:[(0,G.jsx)(mt,{children:b.getHeaderGroups().map(e=>(0,G.jsx)(R,{children:e.headers.map(e=>{let t=e.column.getIsSorted(),n=e.column.getToggleSortingHandler();return(0,G.jsxs)(ft,{scope:`col`,tabIndex:e.column.getCanSort()?0:void 0,"aria-sort":C(t),className:F(e.column.getCanSort()&&`tap-target-comfortable cursor-pointer select-none`,Lc.has(e.column.id)&&`text-right`),onClick:n,onKeyDown:e=>{n&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n(e))},children:[Ui(e.column.columnDef.header,e.getContext()),S(t)]},e.id)})},e.id))}),(0,G.jsx)(ht,{children:b.getRowModel().rows.length===0?(0,G.jsx)(R,{children:(0,G.jsx)(z,{colSpan:y.length,className:`text-muted-foreground`,children:(0,G.jsxs)(`span`,{className:`flex items-center justify-center gap-2 py-2`,children:[(0,G.jsx)(Ft,{"aria-hidden":`true`,className:`size-4 shrink-0`}),`No stages to show.`]})})}):b.getRowModel().rows.map(e=>(0,G.jsx)(R,{className:`cursor-pointer`,onClick:()=>i(e.original.stage.id),children:e.getVisibleCells().map(e=>(0,G.jsx)(z,{className:Lc.has(e.column.id)?`text-right`:void 0,children:Ui(e.column.columnDef.cell,e.getContext())},e.id))},e.id))})]}),b.getPageCount()>1?(0,G.jsxs)(`div`,{className:`flex items-center justify-end gap-2 text-xs`,children:[(0,G.jsx)(L,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable`,onClick:()=>b.previousPage(),disabled:!b.getCanPreviousPage(),children:`Previous`}),(0,G.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Page `,f.pageIndex+1,` of `,b.getPageCount()]}),(0,G.jsx)(L,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable`,onClick:()=>b.nextPage(),disabled:!b.getCanNextPage(),children:`Next`})]}):null]})})}var Kc=20,qc=24,Jc=40,Yc=200,Xc=640;function Zc(e,t=Kc){let n=[...e].filter(e=>e.submittedAt&&e.completedAt),r=n.length;return r<=t?{stages:n.sort((e,t)=>e.submittedAt-t.submittedAt),total:r,capped:!1}:{stages:[...n].sort((e,t)=>t.completedAt-t.submittedAt-(e.completedAt-e.submittedAt)).slice(0,t).sort((e,t)=>e.submittedAt-t.submittedAt),total:r,capped:!0}}function Qc({appModel:e,catalog:t}){let{openStage:n}=_t(),r=[...e.stages.values()].filter(e=>e.submittedAt&&e.completedAt),i=r.length,o=r.reduce((e,t)=>Math.min(e,t.submittedAt),1/0),s=e.app?.startTime??(Number.isFinite(o)?o:0),d=new Set(t.filter(e=>e.stageId!=null).map(e=>e.stageId)),p=M(),[h,_]=(0,U.useState)(()=>p===`advanced`?i:Kc),{stages:v}=Zc(r,h),y=Zn(v).map(e=>({stageId:e.id,label:`Stage ${e.id}`,wait:e.submittedAt-s,duration:e.completedAt-e.submittedAt,flagged:d.has(e.id)})),b=Math.min(Xc,Math.max(Yc,y.length*qc+Jc)),x=b-Jc,S=Math.max(1,Math.floor(x/qc)),C=Math.max(1,Math.ceil(y.length/S));return(0,G.jsx)(B,{title:`Job Timeline`,summary:i>0?(0,G.jsx)(K,{value:`${i} stage${i===1?``:`s`}`,context:`${d.size} flagged`}):void 0,children:i===0?(0,G.jsx)(Sn,{tone:`neutral`,icon:Ft,title:`No stages in this run.`}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,G.jsx)(`label`,{htmlFor:`timeline-topn`,children:`showing top`}),(0,G.jsx)(`input`,{id:`timeline-topn`,type:`number`,min:1,max:i,value:Math.min(h,i),onChange:e=>{let t=parseInt(e.target.value,10);Number.isFinite(t)||(t=h),_(Math.max(1,Math.min(i,t)))},className:`w-16 rounded border border-input bg-transparent px-1 py-0.5`,"aria-label":`Number of stages to show`}),(0,G.jsxs)(`span`,{children:[`of `,i,` by duration · flagged in red`]})]}),(0,G.jsx)(He,{ariaLabel:`Job timeline: stage durations by time from app start.`,height:b,table:{caption:`Job timeline: stage durations by time from app start`,columns:[`Stage`,`Start`,`Duration`],rows:y.map(e=>[e.label,T(e.wait),T(e.duration)]),align:[`left`,`right`,`right`]},children:(0,G.jsxs)(l,{data:y,layout:`vertical`,children:[(0,G.jsx)(c,{stroke:I.muted,strokeOpacity:.2,horizontal:!1}),(0,G.jsx)(m,{type:`number`,tickFormatter:e=>`${Math.round(e/1e3)}s`,tick:{fontSize:10},tickCount:10}),(0,G.jsx)(f,{type:`category`,dataKey:`label`,tick:{fontSize:10},width:64,interval:0,tickFormatter:(e,t)=>t%C===0?e:``}),(0,G.jsx)(g,{formatter:(e,t)=>t===`Duration`?T(Number(e)):[null,null]}),(0,G.jsx)(u,{dataKey:`wait`,stackId:`timeline`,fill:`transparent`,name:`Wait`}),(0,G.jsx)(u,{dataKey:`duration`,stackId:`timeline`,name:`Duration`,cursor:`pointer`,onClick:e=>n(e.payload.stageId),children:y.map(e=>(0,G.jsx)(a,{fill:e.flagged?I.critical:I.accent,stroke:e.flagged?I.critical:`none`,strokeWidth:e.flagged?2:0},e.stageId))})]})})]})})}var $c={present:`present`,disabled:`disabled`,notEmitted:`not emitted`,notApplicable:`not applicable`,outsideEventLog:`outside event log`,unknown:`unknown`},el={present:`info`,disabled:`warning`,notEmitted:`warning`,notApplicable:`muted`,outsideEventLog:`muted`,unknown:`muted`};function tl({entry:e}){let t=e.evidence?.count,n=Ye(),r=`${e.summary}${t==null?``:` · ${t} observed`}`,{tooltipProps:i,srOnlyTooltip:a}=Ke(r);return(0,G.jsxs)(`li`,{id:`evidence-availability-${e.key}`,tabIndex:-1,ref:t=>n(e.key,t),className:`flex flex-col gap-0.5 rounded-md px-2 py-1 outline-none focus:ring-2 focus:ring-ring`,...i,children:[(0,G.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,G.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,G.jsx)(Se,{impactBand:el[e.state]}),(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:Xe(e.key)})]}),(0,G.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:$c[e.state]}),a]}),(0,G.jsx)(N,{children:(0,G.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:r})})]})}function nl(e){return Object.keys($c).map(t=>[t,e.filter(e=>e.state===t).length]).filter(([,e])=>e>0).map(([e,t])=>`${t} ${$c[e]}`).join(` · `)}function rl({ledger:e}){let{evidenceCardOpen:t,setEvidenceCardOpen:n}=ke();return(0,G.jsx)(B,{title:`Evidence availability`,open:t,onOpenChange:n,summary:(0,G.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e?nl(e.entries):`Unavailable for this restored run`}),children:e?(0,G.jsx)(`ul`,{className:`grid grid-cols-1 gap-x-4 gap-y-0.5 sm:grid-cols-2`,"aria-label":`Evidence availability ledger`,children:e.entries.map(e=>(0,G.jsx)(tl,{entry:e},e.key))}):(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Evidence availability is unavailable for this restored run.`})})}var il=64;function al(e,t){return t>=1?e:`color-mix(in srgb, ${e} ${t*100}%, transparent)`}function ol(e){return[{key:`startup`,label:`Startup`,value:e.startup,color:I.info,fillOpacity:1},{key:`stagesActive`,label:`Stages active`,value:e.stagesActive,color:I.clean,fillOpacity:1},{key:`gaps`,label:`Scheduler gaps`,value:e.gaps,color:I.warning,fillOpacity:1},{key:`idle`,label:`Idle`,value:e.idle,color:I.muted,fillOpacity:.6}].filter(e=>e.value>0).map(e=>({...e,legendColor:al(e.color,e.fillOpacity)}))}var sl=(0,U.memo)(function(){let e=A()?.data.wallClock;if(!e||e.total<=0)return null;let n=ol(e),r=t=>e.total>0?t/e.total*100:0,a=n.reduce((e,t)=>t.value>e.value?t:e,n[0]),o=[n.reduce((e,t)=>({...e,[t.key]:t.value}),{name:`total`})];return(0,G.jsxs)(B,{title:`Wall-Clock Breakdown`,badges:(0,G.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[T(e.total),` total`]}),summary:(0,G.jsx)(K,{value:`${a.label} ${Math.round(r(a.value))}%`,context:`of ${T(e.total)} total`}),children:[(0,G.jsx)(He,{ariaLabel:`Wall-clock breakdown: ${T(e.total)} total, split across startup, active stages, scheduler gaps and idle time. See the table below for exact values.`,height:il,table:{caption:`Wall-clock time breakdown`,columns:[`Segment`,`Duration`,`% of total`],rows:n.map(e=>[e.label,T(e.value),`${Math.round(r(e.value))}%`]),align:[`left`,`right`,`right`]},children:(0,G.jsxs)(l,{data:o,layout:`vertical`,stackOffset:`expand`,margin:{top:0,right:0,bottom:0,left:0},children:[(0,G.jsx)(m,{type:`number`,hide:!0,domain:[0,1]}),(0,G.jsx)(f,{type:`category`,dataKey:`name`,hide:!0}),(0,G.jsx)(g,{shared:!1,labelFormatter:()=>``,formatter:(e,t)=>[T(Number(e)),t]}),(0,G.jsx)(i,{wrapperStyle:{fontSize:12},itemSorter:e=>n.findIndex(t=>t.key===e.dataKey),formatter:(e,t)=>{let r=n.find(e=>e.key===t.dataKey);return(0,G.jsx)(`span`,{style:{color:r?.color},children:e})},content:e=>(0,G.jsx)(t,{...e,payload:e.payload?.map(e=>{let t=n.find(t=>t.key===e.dataKey);return t?{...e,color:t.legendColor}:e})})}),n.map(e=>(0,G.jsx)(u,{dataKey:e.key,name:e.label,stackId:`wallclock`,fill:e.color,fillOpacity:e.fillOpacity},e.key))]})}),(0,G.jsx)(N,{children:(0,G.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-3 text-xs text-muted-foreground`,children:n.map(e=>(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,G.jsx)(`span`,{className:`inline-block size-2.5 rounded-sm`,style:{backgroundColor:e.color,opacity:e.fillOpacity}}),e.label,` (`,T(e.value),`)`]},e.key))})})]})});function cl(){let e=A()?.data.wastedCoreHours;if(e?.totalCoreHours==null)return null;let t=e.totalCoreHours>0?Math.round(e.wastedCoreHours/e.totalCoreHours*100):0;return(0,G.jsx)(B,{title:`Wasted Core-Hours`,statusBadge:(0,G.jsx)(tr,{}),defaultCollapsed:!0,summary:(0,G.jsx)(K,{value:(0,G.jsx)(`span`,{className:`whitespace-nowrap`,children:q(e.wastedCoreHours)}),context:`wasted of ${q(e.totalCoreHours)} allocated`}),children:(0,G.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[(0,G.jsxs)(`p`,{children:[`Allocated: `,(0,G.jsx)(`strong`,{children:q(e.totalCoreHours)}),` · Used:`,` `,(0,G.jsx)(`strong`,{children:q(e.usefulCoreHours)})]}),(0,G.jsxs)(`p`,{children:[(0,G.jsx)(Se,{impactBand:`info`}),` Wasted: `,(0,G.jsx)(`strong`,{children:q(e.wastedCoreHours)}),` (`,t,`% of allocated)`]}),(0,G.jsx)(N,{children:(0,G.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Allocated = `,e.totalCores,` cores over the run; used = core-time that actually ran tasks.`]})}),e.topStages.length>0&&(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Top stages by task core-time`}),(0,G.jsx)(`ul`,{className:`space-y-0.5`,children:e.topStages.map(e=>(0,G.jsxs)(`li`,{className:`flex justify-between gap-2`,children:[(0,G.jsxs)(`span`,{children:[`Stage `,e.stageId]}),(0,G.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:q(e.coreMs/36e5)})]},e.stageId))})]})]})})}var ll=[`[data-testid="next-step"] [data-shortcut-target]`,`[data-testid="fix-these-first-row"] button[data-shortcut-target]`,`[data-testid="fix-these-first-group-row"] button[data-shortcut-target]`].join(`, `);function ul(e){if(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey)return!0;let t=e.target,n=t?.tagName;return n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t?.isContentEditable||t?.closest?.(`[role="listbox"], [role="combobox"]`)?!0:[...document.querySelectorAll(`[role="dialog"], [role="menu"], [role="alertdialog"], [role="listbox"]`)].some(e=>!e.closest(`[hidden]`)&&e.getClientRects().length>0)}function dl(){return[...document.querySelectorAll(ll)].filter(e=>e.offsetParent!==null||e.getClientRects().length>0)}function fl(e){let t=dl();if(t.length===0)return null;let n=t.indexOf(document.activeElement),r=t[n===-1?e===1?0:t.length-1:Math.min(t.length-1,Math.max(0,n+e))],i=window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1;return r.focus({preventScroll:!0}),r.scrollIntoView?.({block:`nearest`,behavior:i?`auto`:`smooth`}),r}function pl({enabled:e,showFindings:t,showFullReport:n}){(0,U.useEffect)(()=>{if(!e)return;function r(e){if(!ul(e))switch(e.key){case`j`:case`k`:{let n=e.key===`j`?1:-1;e.preventDefault(),t(),requestAnimationFrame(()=>fl(n));return}case`f`:{let t=document.querySelector(`[aria-label="Filter findings"] button`);if(!t)return;e.preventDefault(),t.focus();return}case`1`:t(),e.preventDefault();return;case`2`:n(),e.preventDefault();return}}return window.addEventListener(`keydown`,r),()=>window.removeEventListener(`keydown`,r)},[e,t,n])}function ml({appModel:e,catalog:t,configFindings:n,getTaskData:r,activeFileId:i,onRoute:a}){return(0,G.jsxs)(`div`,{className:`space-y-6`,children:[(0,G.jsx)(`h2`,{className:`sr-only`,children:`Full app report`}),(0,G.jsx)(sl,{}),(0,G.jsx)(Qc,{appModel:e,catalog:t}),(0,G.jsx)(cr,{appModel:e,activeFileId:i}),(0,G.jsx)(Gc,{appModel:e,catalog:t,getTaskData:r,onRoute:a}),(0,G.jsxs)(Tt,{children:[bn().map(({component:a,widgetId:o})=>(0,G.jsx)(V,{cardId:`reference-${o}`,widgetId:o,collapsedTile:!0,children:(0,G.jsx)(U.Suspense,{fallback:(0,G.jsx)(lt,{}),children:(0,G.jsx)(a,{appModel:e,catalog:t,configFindings:n,getTaskData:r,activeFileId:i,defaultCollapsed:!0})})},o)),(0,G.jsx)(V,{cardId:`reference-evidence-availability`,collapsedTile:!0,children:(0,G.jsx)(rl,{ledger:e.evidenceAvailability})}),(0,G.jsx)(V,{cardId:`reference-etl-phases`,collapsedTile:!0,children:(0,G.jsx)(ir,{})}),(0,G.jsx)(V,{cardId:`reference-scaling-sim`,collapsedTile:!0,children:(0,G.jsx)(xr,{appModel:e})}),(0,G.jsx)(V,{cardId:`reference-efficiency-model`,collapsedTile:!0,children:(0,G.jsx)(nr,{})}),(0,G.jsx)(V,{cardId:`reference-wasted-core-hours`,collapsedTile:!0,children:(0,G.jsx)(cl,{})}),(0,G.jsx)(V,{cardId:`reference-core-usage-histogram`,collapsedTile:!0,children:(0,G.jsx)($n,{appModel:e,getTaskData:r})})]})]})}function hl(e,t,n){let r=e.map(e=>e===`impactBands`?`${[...t.impactBands].join(`, `)} impact`:e===`types`?[...t.types].map(e=>yt(e)).join(`, `):[...t.stages].map(e=>`Stage ${e}`).join(`, `));return`Cleared the ${r.join(` and `)} filter${r.length===1?``:`s`} to show ${n}.`}function gl({appModel:e,catalog:t,configFindings:n,getTaskData:r,activeFileId:i,options:a,onRoute:o,activeTab:s,onActiveTabChange:c,renderTopbar:l}){let{selection:u,replaceSelection:d}=In(),f=M(),p=A(),[m,h]=(0,U.useState)(null),g=(0,U.useCallback)((e,t)=>{let n=On(e,u);if(n.length===0)return;let r={...u};for(let e of n)Object.assign(r,{[e]:wn()[e]});d(r),h({text:hl(n,u,t),selection:r})},[u,d]),_=(0,U.useCallback)(e=>{yn(e.finding.type)||g(e.finding,`this finding`),o(e)},[g,o]),v=(0,U.useCallback)(e=>{let t=pe(p).filter(t=>t.impactBand===e).reduce((e,t)=>!e||On(t,u).length<On(e,u).length?t:e,null);t&&g(t,`the ${e} findings`),c(`findings`),requestAnimationFrame(()=>{let t=document.getElementById(`impact-band-${e}-heading`);if(!t)return;let n=window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1;t.scrollIntoView?.({block:`start`,behavior:n?`auto`:`smooth`}),t.focus({preventScroll:!0})})},[p,u,g,c]),y=(0,U.useMemo)(()=>Dn(t,u),[t,u]),b=(0,U.useMemo)(()=>Dn(n??[],u),[n,u]),x=y.length+b.length,S=t.length+(n??[]).length>0&&x===0,C=f===`advanced`||!Tn(u);return(0,G.jsxs)(G.Fragment,{children:[l(v),(0,G.jsxs)(`main`,{className:`flex-1 space-y-6 p-4`,children:[(0,G.jsx)(Nr,{}),p?(0,G.jsx)(Mr,{interpretation:p,onRoute:_}):null,p?(0,G.jsx)(Br,{interpretation:p.data,catalog:y}):null,C&&(0,G.jsx)(Gn,{options:a,resultCount:x}),C&&m?.selection===u?(0,G.jsx)(`p`,{role:`status`,className:`text-sm text-muted-foreground`,children:m.text}):null,S&&(0,G.jsx)(Ln,{}),!S&&(0,G.jsxs)(Fe,{value:s,onValueChange:e=>c(e),children:[(0,G.jsxs)(Re,{variant:`chrome`,"aria-label":`Report view`,children:[(0,G.jsx)(Ne,{value:`findings`,className:`tap-target-comfortable`,children:`Findings`}),(0,G.jsx)(Ne,{value:`full-report`,className:`tap-target-comfortable`,children:`Full app report`})]}),(0,G.jsxs)(Ie,{value:`findings`,keepMounted:!0,children:[(0,G.jsx)(`h2`,{className:`sr-only`,children:`Findings`}),(0,G.jsx)(xi,{appModel:e,catalog:y,configFindings:b,stages:e.stages,getTaskData:r,activeFileId:i,onRoute:o})]}),(0,G.jsx)(Ie,{value:`full-report`,keepMounted:!0,children:(0,G.jsx)(ml,{appModel:e,catalog:y,getTaskData:r,configFindings:b,activeFileId:i,onRoute:o})})]}),(0,G.jsx)(zi,{appModel:e,catalog:t,getTaskData:r,onRoute:_})]})]})}function _l(){let{resetToDropZone:e,startLoad:t,getTaskData:n,compareWithAnotherRun:r}=pt(),i=P(e=>e.appModel),a=P(e=>e.catalog),o=P(e=>e.activeFileId),s=P(e=>e.exportMode),{recentEntries:c,onPickRecent:l,onRemoveRecent:u}=nt(o),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(`findings`),h=M(),g=(0,U.useCallback)(()=>m(`findings`),[]),_=(0,U.useCallback)(()=>m(`full-report`),[]);pl({enabled:h===`advanced`,showFindings:g,showFullReport:_});let{referenceOpen:v}=ke(),[y,b]=(0,U.useState)(null),[x,S]=(0,U.useState)(null),[C,ee]=(0,U.useState)(null),te=(0,U.useRef)(0),w=(0,U.useRef)(null),ne=(0,U.useRef)(null),T=(0,U.useRef)(new Map),re=(0,U.useRef)(new Map),E=(0,U.useRef)(null),ie=y?.target??null;(0,U.useEffect)(()=>()=>{E.current&&clearTimeout(E.current)},[]),(0,U.useEffect)(()=>{v&&m(`full-report`)},[v]);let D=(0,U.useCallback)(e=>{w.current?.token===e&&(w.current=null,ne.current=null,b(t=>t?.token===e?null:t))},[]),O=(0,U.useCallback)(e=>{if(w.current?.token!==e.token)return null;let{catalog:t,configFindings:n,activeFileId:r}=de.getState();if(ne.current!==r)return null;let i=Cr(e.target.finding,[...t,...n]);return!i||i.widgetId!==e.target.widgetId||i.region!==e.target.region?null:i},[]),ae=(0,U.useCallback)(e=>{m(yn(e.finding.type)?`full-report`:`findings`);let t=te.current+1;te.current=t;let{catalog:n,configFindings:r,activeFileId:i}=de.getState(),a=Cr(e.finding,[...n,...r]);if(!a||a.widgetId!==e.widgetId||a.region!==e.region){w.current=null,ne.current=null,b(null);return}let o={target:a,token:t};w.current=o,ne.current=i,b(o)},[]),k=(0,U.useCallback)((e,t)=>{T.current.set(e,t);let n=w.current;return n?.target.widgetId===e&&O(n)&&t.open(),()=>{T.current.get(e)===t&&T.current.delete(e)}},[O]),oe=(0,U.useCallback)((e,t)=>(re.current.set(e,t),()=>{re.current.get(e)===t&&re.current.delete(e)}),[]),se=(0,U.useCallback)((e,t)=>{if(!t)return;let n=w.current;if(!n||n.target.widgetId!==e)return;let r=O(n);if(!r){D(n.token);return}let i=T.current.get(e);if(!i)return;let a=i.getDisclosureButton();if(!a){D(n.token);return}let o=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,s=re.current.get(r.finding);s?(s.scrollIntoView({behavior:o?`auto`:`smooth`,block:`center`,inline:`nearest`}),s.focus({preventScroll:!0}),E.current&&clearTimeout(E.current),ee(r.finding),E.current=setTimeout(()=>{E.current=null,ee(null)},2e3)):(i.wrapperElement.scrollIntoView({behavior:o?`auto`:`smooth`,block:`start`,inline:`nearest`}),a.focus({preventScroll:!0}),S(e)),D(n.token)},[D,O]),ce=(0,U.useCallback)(e=>{S(t=>t===e?null:t)},[]);(0,U.useLayoutEffect)(()=>{if(!y)return;let e=O(y);if(!e){D(y.token);return}T.current.get(e.widgetId)?.open()},[D,O,y]),(0,U.useLayoutEffect)(()=>{let e=w.current;e&&!O(e)&&D(e.token)},[o,a,D,O]);let A=P(e=>e.configFindings),j=(0,U.useMemo)(()=>kn(a,A),[a,A]);return(0,G.jsxs)(`div`,{"data-testid":`dashboard`,className:`relative flex min-h-screen flex-col`,style:{paddingRight:`var(--docs-inset, 0px)`},onDragOver:e=>{s||(e.preventDefault(),f(!0))},onDragLeave:()=>f(!1),onDrop:e=>{if(s)return;e.preventDefault(),f(!1);let n=e.dataTransfer.files[0];n&&t(n)},children:[(0,G.jsx)(`button`,{type:`button`,className:`sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-50 focus:rounded-md focus:bg-background focus:px-3 focus:py-2 focus:text-sm focus:font-medium focus:shadow focus:ring-2 focus:ring-ring`,onClick:()=>{let e=document.getElementById(`run-verdict`);e?.scrollIntoView?.({block:`start`}),e?.focus({preventScroll:!0})},children:`Skip to the verdict`}),(0,G.jsx)(Fn,{options:j,fileId:o,children:(0,G.jsx)(dt,{registerWidget:k,registerFindingAnchor:oe,reportWidgetOpen:se,clearRouteFocus:ce,focusedWidgetId:x,activeRouteTarget:ie,flashedFinding:C,children:(0,G.jsx)(gl,{appModel:i,catalog:a,configFindings:A,getTaskData:n,activeFileId:o,options:j,onRoute:ae,activeTab:p,onActiveTabChange:m,renderTopbar:t=>(0,G.jsx)(Ze,{onJumpToFindings:t,onLoadNew:e,onCompare:r,recentEntries:c,activeFileId:o,onPickRecent:l,onRemoveRecent:u})})})}),d&&(0,G.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none fixed inset-0 z-50 flex items-center justify-center bg-background/80`,children:(0,G.jsx)(`p`,{className:`rounded-lg border-2 border-dashed border-primary px-6 py-4 text-lg font-medium`,children:`Drop to load a new event log`})})]})}function vl(){return(0,G.jsx)(Le,{children:(0,G.jsx)(_l,{})})}export{vl as Dashboard,ii as a,Xn as c,Sn as d,Ft as f,ti as i,Bn as l,Ei as n,K as o,ai as r,Zn as s,Di as t,Vn as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,M as n}from"./charts-vendor-0VMaLVLN.js";import{ct as r,et as i,nt as a,rt as o,tt as s}from"./react-vendor-BAKt3vny.js";import{p as c}from"./plan-graph-vendor-B0sEms9Z.js";var l=e(n(),1),u=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,d=t,f=(e,t)=>n=>{if(t?.variants==null)return d(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=u(t)||u(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return d(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},p=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},m=(e,t)=>({classGroupId:e,validator:t}),h=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),g=`-`,_=[],ee=`arbitrary..`,v=e=>{let t=b(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return te(e);let n=e.split(g);return y(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?p(i,t):t:i||_}return n[e]||_}}},y=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=y(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(g):e.slice(t).join(g),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},te=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?ee+r:void 0})(),b=e=>{let{theme:t,classGroups:n}=e;return x(n,t)},x=(e,t)=>{let n=h();for(let r in e){let i=e[r];S(i,n,r,t)}return n},S=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];C(i,t,n,r)}},C=(e,t,n,r)=>{if(typeof e==`string`){ne(e,t,n);return}if(typeof e==`function`){re(e,t,n,r);return}w(e,t,n,r)},ne=(e,t,n)=>{let r=e===``?t:ie(t,e);r.classGroupId=n},re=(e,t,n,r)=>{if(ae(e)){S(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(m(n,e))},w=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];S(o,ie(t,a),n,r)}},ie=(e,t)=>{let n=e,r=t.split(g),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=h(),n.nextPart.set(t,i)),n=i}return n},ae=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,T=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},E=`!`,D=`:`,oe=[],se=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),O=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===D){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(E)?(c=s.slice(0,-1),l=!0):s.startsWith(E)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return se(t,l,c,u)};if(t){let e=t+D,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):se(oe,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},ce=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},le=e=>({cache:T(e.cacheSize),parseClassName:O(e),sortModifiers:ce(e),postfixLookupClassGroupIds:ue(e),...v(e)}),ue=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e<n.length;e++)t[n[e]]=!0;return t},de=/\s+/,k=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(de),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),ee=f?_+E:_,v=ee+g;if(s.indexOf(v)>-1)continue;s.push(v);let y=i(g,h);for(let e=0;e<y.length;++e){let t=y[e];s.push(ee+t)}l=t+(l.length>0?` `+l:l)}return l},A=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=j(n))&&(i&&(i+=` `),i+=r);return i},j=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=j(e[r]))&&(n&&(n+=` `),n+=t);return n},fe=(e,...t)=>{let n,r,i,a,o=o=>(n=le(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=k(e,n);return i(e,a),a};return a=o,(...e)=>a(A(...e))},M=[],N=e=>{let t=t=>t[e]||M;return t.isThemeGetter=!0,t.themeKey=e,t},pe=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,P=/^\((?:(\w[\w-]*):)?(.+)\)$/i,me=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,he=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,F=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ge=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,_e=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ve=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,I=e=>me.test(e),L=e=>!!e&&!Number.isNaN(Number(e)),R=e=>!!e&&Number.isInteger(Number(e)),ye=e=>e.endsWith(`%`)&&L(e.slice(0,-1)),z=e=>he.test(e),be=()=>!0,xe=e=>F.test(e)&&!ge.test(e),Se=()=>!1,Ce=e=>_e.test(e),we=e=>ve.test(e),Te=e=>!B(e)&&!H(e),Ee=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),De=e=>W(e,He,Se),B=e=>pe.test(e),V=e=>W(e,Ue,xe),Oe=e=>W(e,We,L),ke=e=>W(e,Ke,be),Ae=e=>W(e,Ge,Se),je=e=>W(e,Be,Se),Me=e=>W(e,Ve,we),Ne=e=>W(e,qe,Ce),H=e=>P.test(e),U=e=>G(e,Ue),Pe=e=>G(e,Ge),Fe=e=>G(e,Be),Ie=e=>G(e,He),Le=e=>G(e,Ve),Re=e=>G(e,qe,!0),ze=e=>G(e,Ke,!0),W=(e,t,n)=>{let r=pe.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},G=(e,t,n=!1)=>{let r=P.exec(e);return r?r[1]?t(r[1]):n:!1},Be=e=>e===`position`||e===`percentage`,Ve=e=>e===`image`||e===`url`,He=e=>e===`length`||e===`size`||e===`bg-size`,Ue=e=>e===`length`,We=e=>e===`number`,Ge=e=>e===`family-name`,Ke=e=>e===`number`||e===`weight`,qe=e=>e===`shadow`,Je=fe(()=>{let e=N(`color`),t=N(`font`),n=N(`text`),r=N(`font-weight`),i=N(`tracking`),a=N(`leading`),o=N(`breakpoint`),s=N(`container`),c=N(`spacing`),l=N(`radius`),u=N(`shadow`),d=N(`inset-shadow`),f=N(`text-shadow`),p=N(`drop-shadow`),m=N(`blur`),h=N(`perspective`),g=N(`aspect`),_=N(`ease`),ee=N(`animate`),v=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],y=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],te=()=>[...y(),H,B],b=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],x=()=>[`auto`,`contain`,`none`],S=()=>[H,B,c],C=()=>[I,`full`,`auto`,...S()],ne=()=>[R,`none`,`subgrid`,H,B],re=()=>[`auto`,{span:[`full`,R,H,B]},R,H,B],w=()=>[R,`auto`,H,B],ie=()=>[`auto`,`min`,`max`,`fr`,H,B],ae=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],T=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],E=()=>[`auto`,...S()],D=()=>[I,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...S()],oe=()=>[s,I,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...S()],se=()=>[I,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...S()],O=()=>[e,H,B],ce=()=>[...y(),Fe,je,{position:[H,B]}],le=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ue=()=>[`auto`,`cover`,`contain`,Ie,De,{size:[H,B]}],de=()=>[ye,U,V],k=()=>[``,`none`,`full`,l,H,B],A=()=>[``,L,U,V],j=()=>[`solid`,`dashed`,`dotted`,`double`],fe=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],M=()=>[L,ye,Fe,je],pe=()=>[``,`none`,m,H,B],P=()=>[`none`,L,H,B],me=()=>[`none`,L,H,B],he=()=>[L,H,B],F=()=>[I,`full`,...S()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[z],breakpoint:[z],color:[be],container:[z],"drop-shadow":[z],ease:[`in`,`out`,`in-out`],font:[Te],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[z],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[z],shadow:[z],spacing:[`px`,L],text:[z],"text-shadow":[z],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,I,B,H,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,H,B]}],"container-named":[Ee],columns:[{columns:[L,`auto`,B,H,s]}],"break-after":[{"break-after":v()}],"break-before":[{"break-before":v()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:te()}],overflow:[{overflow:b()}],"overflow-x":[{"overflow-x":b()}],"overflow-y":[{"overflow-y":b()}],overscroll:[{overscroll:x()}],"overscroll-x":[{"overscroll-x":x()}],"overscroll-y":[{"overscroll-y":x()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:C()}],"inset-x":[{"inset-x":C()}],"inset-y":[{"inset-y":C()}],start:[{"inset-s":C(),start:C()}],end:[{"inset-e":C(),end:C()}],"inset-bs":[{"inset-bs":C()}],"inset-be":[{"inset-be":C()}],top:[{top:C()}],right:[{right:C()}],bottom:[{bottom:C()}],left:[{left:C()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[R,`auto`,H,B]}],basis:[{basis:[I,`full`,`auto`,s,...S()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[L,I,`auto`,`initial`,`none`,B]}],grow:[{grow:[``,L,H,B]}],shrink:[{shrink:[``,L,H,B]}],order:[{order:[R,`first`,`last`,`none`,H,B]}],"grid-cols":[{"grid-cols":ne()}],"col-start-end":[{col:re()}],"col-start":[{"col-start":w()}],"col-end":[{"col-end":w()}],"grid-rows":[{"grid-rows":ne()}],"row-start-end":[{row:re()}],"row-start":[{"row-start":w()}],"row-end":[{"row-end":w()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ie()}],"auto-rows":[{"auto-rows":ie()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...ae(),`normal`]}],"justify-items":[{"justify-items":[...T(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...T()]}],"align-content":[{content:[`normal`,...ae()]}],"align-items":[{items:[...T(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...T(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ae()}],"place-items":[{"place-items":[...T(),`baseline`]}],"place-self":[{"place-self":[`auto`,...T()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:E()}],mx:[{mx:E()}],my:[{my:E()}],ms:[{ms:E()}],me:[{me:E()}],mbs:[{mbs:E()}],mbe:[{mbe:E()}],mt:[{mt:E()}],mr:[{mr:E()}],mb:[{mb:E()}],ml:[{ml:E()}],"space-x":[{"space-x":S()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":S()}],"space-y-reverse":[`space-y-reverse`],size:[{size:D()}],"inline-size":[{inline:[`auto`,...oe()]}],"min-inline-size":[{"min-inline":[`auto`,...oe()]}],"max-inline-size":[{"max-inline":[`none`,...oe()]}],"block-size":[{block:[`auto`,...se()]}],"min-block-size":[{"min-block":[`auto`,...se()]}],"max-block-size":[{"max-block":[`none`,...se()]}],w:[{w:[s,`screen`,...D()]}],"min-w":[{"min-w":[s,`screen`,`none`,...D()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...D()]}],h:[{h:[`screen`,`lh`,...D()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...D()]}],"max-h":[{"max-h":[`screen`,`lh`,`none`,...D()]}],"font-size":[{text:[`base`,n,U,V]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,ze,ke]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,ye,B]}],"font-family":[{font:[Pe,Ae,t]}],"font-features":[{"font-features":[B]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,H,B]}],"line-clamp":[{"line-clamp":[L,`none`,H,Oe]}],leading:[{leading:[`none`,a,...S()]}],"list-image":[{"list-image":[`none`,H,B]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,H,B]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:O()}],"text-color":[{text:O()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...j(),`wavy`]}],"text-decoration-thickness":[{decoration:[L,`from-font`,`auto`,H,V]}],"text-decoration-color":[{decoration:O()}],"underline-offset":[{"underline-offset":[L,`auto`,H,B]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:S()}],"tab-size":[{tab:[R,H,B]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,H,B]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,H,B]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:ce()}],"bg-repeat":[{bg:le()}],"bg-size":[{bg:ue()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},R,H,B],radial:[``,H,B],conic:[``,R,H,B]},Le,Me]}],"bg-color":[{bg:O()}],"gradient-from-pos":[{from:de()}],"gradient-via-pos":[{via:de()}],"gradient-to-pos":[{to:de()}],"gradient-from":[{from:O()}],"gradient-via":[{via:O()}],"gradient-to":[{to:O()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:A()}],"border-w-x":[{"border-x":A()}],"border-w-y":[{"border-y":A()}],"border-w-s":[{"border-s":A()}],"border-w-e":[{"border-e":A()}],"border-w-bs":[{"border-bs":A()}],"border-w-be":[{"border-be":A()}],"border-w-t":[{"border-t":A()}],"border-w-r":[{"border-r":A()}],"border-w-b":[{"border-b":A()}],"border-w-l":[{"border-l":A()}],"divide-x":[{"divide-x":A()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":A()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...j(),`hidden`,`none`]}],"divide-style":[{divide:[...j(),`hidden`,`none`]}],"border-color":[{border:O()}],"border-color-x":[{"border-x":O()}],"border-color-y":[{"border-y":O()}],"border-color-s":[{"border-s":O()}],"border-color-e":[{"border-e":O()}],"border-color-bs":[{"border-bs":O()}],"border-color-be":[{"border-be":O()}],"border-color-t":[{"border-t":O()}],"border-color-r":[{"border-r":O()}],"border-color-b":[{"border-b":O()}],"border-color-l":[{"border-l":O()}],"divide-color":[{divide:O()}],"outline-style":[{outline:[...j(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[L,H,B]}],"outline-w":[{outline:[``,L,U,V]}],"outline-color":[{outline:O()}],shadow:[{shadow:[``,`inner`,`none`,u,Re,Ne]}],"shadow-color":[{shadow:O()}],"inset-shadow":[{"inset-shadow":[`none`,d,Re,Ne]}],"inset-shadow-color":[{"inset-shadow":O()}],"ring-w":[{ring:A()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:O()}],"ring-offset-w":[{"ring-offset":[L,V]}],"ring-offset-color":[{"ring-offset":O()}],"inset-ring-w":[{"inset-ring":A()}],"inset-ring-color":[{"inset-ring":O()}],"text-shadow":[{"text-shadow":[`none`,f,Re,Ne]}],"text-shadow-color":[{"text-shadow":O()}],opacity:[{opacity:[L,H,B]}],"mix-blend":[{"mix-blend":[...fe(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":fe()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[L]}],"mask-image-linear-from-pos":[{"mask-linear-from":M()}],"mask-image-linear-to-pos":[{"mask-linear-to":M()}],"mask-image-linear-from-color":[{"mask-linear-from":O()}],"mask-image-linear-to-color":[{"mask-linear-to":O()}],"mask-image-t-from-pos":[{"mask-t-from":M()}],"mask-image-t-to-pos":[{"mask-t-to":M()}],"mask-image-t-from-color":[{"mask-t-from":O()}],"mask-image-t-to-color":[{"mask-t-to":O()}],"mask-image-r-from-pos":[{"mask-r-from":M()}],"mask-image-r-to-pos":[{"mask-r-to":M()}],"mask-image-r-from-color":[{"mask-r-from":O()}],"mask-image-r-to-color":[{"mask-r-to":O()}],"mask-image-b-from-pos":[{"mask-b-from":M()}],"mask-image-b-to-pos":[{"mask-b-to":M()}],"mask-image-b-from-color":[{"mask-b-from":O()}],"mask-image-b-to-color":[{"mask-b-to":O()}],"mask-image-l-from-pos":[{"mask-l-from":M()}],"mask-image-l-to-pos":[{"mask-l-to":M()}],"mask-image-l-from-color":[{"mask-l-from":O()}],"mask-image-l-to-color":[{"mask-l-to":O()}],"mask-image-x-from-pos":[{"mask-x-from":M()}],"mask-image-x-to-pos":[{"mask-x-to":M()}],"mask-image-x-from-color":[{"mask-x-from":O()}],"mask-image-x-to-color":[{"mask-x-to":O()}],"mask-image-y-from-pos":[{"mask-y-from":M()}],"mask-image-y-to-pos":[{"mask-y-to":M()}],"mask-image-y-from-color":[{"mask-y-from":O()}],"mask-image-y-to-color":[{"mask-y-to":O()}],"mask-image-radial":[{"mask-radial":[H,B]}],"mask-image-radial-from-pos":[{"mask-radial-from":M()}],"mask-image-radial-to-pos":[{"mask-radial-to":M()}],"mask-image-radial-from-color":[{"mask-radial-from":O()}],"mask-image-radial-to-color":[{"mask-radial-to":O()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":y()}],"mask-image-conic-pos":[{"mask-conic":[L]}],"mask-image-conic-from-pos":[{"mask-conic-from":M()}],"mask-image-conic-to-pos":[{"mask-conic-to":M()}],"mask-image-conic-from-color":[{"mask-conic-from":O()}],"mask-image-conic-to-color":[{"mask-conic-to":O()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:ce()}],"mask-repeat":[{mask:le()}],"mask-size":[{mask:ue()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,H,B]}],filter:[{filter:[``,`none`,H,B]}],blur:[{blur:pe()}],brightness:[{brightness:[L,H,B]}],contrast:[{contrast:[L,H,B]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Re,Ne]}],"drop-shadow-color":[{"drop-shadow":O()}],grayscale:[{grayscale:[``,L,H,B]}],"hue-rotate":[{"hue-rotate":[L,H,B]}],invert:[{invert:[``,L,H,B]}],saturate:[{saturate:[L,H,B]}],sepia:[{sepia:[``,L,H,B]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,H,B]}],"backdrop-blur":[{"backdrop-blur":pe()}],"backdrop-brightness":[{"backdrop-brightness":[L,H,B]}],"backdrop-contrast":[{"backdrop-contrast":[L,H,B]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,L,H,B]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[L,H,B]}],"backdrop-invert":[{"backdrop-invert":[``,L,H,B]}],"backdrop-opacity":[{"backdrop-opacity":[L,H,B]}],"backdrop-saturate":[{"backdrop-saturate":[L,H,B]}],"backdrop-sepia":[{"backdrop-sepia":[``,L,H,B]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,H,B]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[L,`initial`,H,B]}],ease:[{ease:[`linear`,`initial`,_,H,B]}],delay:[{delay:[L,H,B]}],animate:[{animate:[`none`,ee,H,B]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,H,B]}],"perspective-origin":[{"perspective-origin":te()}],rotate:[{rotate:P()}],"rotate-x":[{"rotate-x":P()}],"rotate-y":[{"rotate-y":P()}],"rotate-z":[{"rotate-z":P()}],scale:[{scale:me()}],"scale-x":[{"scale-x":me()}],"scale-y":[{"scale-y":me()}],"scale-z":[{"scale-z":me()}],"scale-3d":[`scale-3d`],skew:[{skew:he()}],"skew-x":[{"skew-x":he()}],"skew-y":[{"skew-y":he()}],transform:[{transform:[H,B,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:te()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:F()}],"translate-x":[{"translate-x":F()}],"translate-y":[{"translate-y":F()}],"translate-z":[{"translate-z":F()}],"translate-none":[`translate-none`],zoom:[{zoom:[R,H,B]}],accent:[{accent:O()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:O()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,H,B]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":O()}],"scrollbar-track-color":[{"scrollbar-track":O()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,H,B]}],fill:[{fill:[`none`,...O()]}],"stroke-w":[{stroke:[L,U,V,Oe]}],stroke:[{stroke:[`none`,...O()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`start`,`end`,`right`,`left`],"inset-y":[`inset-bs`,`inset-be`,`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`ps`,`pe`,`pr`,`pl`],py:[`pbs`,`pbe`,`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`ms`,`me`,`mr`,`ml`],my:[`mbs`,`mbe`,`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-s`,`border-w-e`,`border-w-r`,`border-w-l`],"border-w-y":[`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-s`,`border-color-e`,`border-color-r`,`border-color-l`],"border-color-y":[`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-ms`,`scroll-me`,`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-ps`,`scroll-pe`,`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function K(...e){return Je(t(e))}var Ye=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},Xe=(e=>e?Ye(e):Ye),Ze=e=>e;function Qe(e,t=Ze){let n=l.useSyncExternalStore(e.subscribe,l.useCallback(()=>t(e.getState()),[e,t]),l.useCallback(()=>t(e.getInitialState()),[e,t]));return l.useDebugValue(n),n}var $e={observed:`Observed in this event log.`,explicitlyDisabled:`Explicitly disabled in this event log.`,noObservedExecutorMetrics:`Not emitted by this event log.`,noObservedStageSubmission:`Not emitted by this event log.`,noRddStorageSnapshot:`Stages were submitted without RDD storage snapshots.`,noResolvedSqlPlan:`Not emitted by this event log.`,noSqlExecution:`Not applicable to this event log.`,noEnvironmentUpdate:`Not emitted by this event log.`,noTaskRecords:`Not emitted by this event log.`,noUsableCoreTimeAggregate:`No usable aggregate was emitted.`,outsideEventLogScope:`Available outside local event-log scope.`,parseIncomplete:`Cannot determine from an incomplete parse.`};function et(e,t,n){return{key:e,state:`present`,reasonCode:`observed`,summary:$e.observed,evidence:{eventType:t,count:n}}}function q(e,t,n){return{key:e,state:t,reasonCode:n,summary:$e[n]}}function J(e,t){let n=e[t];return typeof n==`number`&&Number.isFinite(n)&&n>0?n:0}function tt(e){return e!=null&&e.schemaVersion===1}function nt(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function rt(e){let t=e?.perStage;return typeof t==`object`&&!!t&&!Array.isArray(t)&&Object.values(t).some(e=>nt(e?.taskCount)&&nt(e?.totalTaskDurationSum))}function it(e,t){return e!=null&&String(e).toLowerCase()===t}function Y(e,t,n){return n?q(e,t===`noSqlExecution`?`notApplicable`:`notEmitted`,t):q(e,`unknown`,`parseIncomplete`)}function at(e,{skippedLines:t=0}={}){let n=e?.app,r=n?.evidenceInputs??{},i=t===0&&J(r,`applicationEnds`)>0,a=J(r,`executorMetricRows`),o=J(r,`stageSubmissions`),s=J(r,`rddStorageSnapshots`),c=J(r,`resolvedSqlPlans`),l=J(r,`sqlExecutions`),u=J(r,`environmentUpdates`),d=J(r,`taskRecords`);return{schemaVersion:1,entries:[a>0?et(`executorMetrics`,`executorMetricRows`,a):it(n?.config?.[`spark.eventLog.logStageExecutorMetrics`],`false`)?q(`executorMetrics`,`disabled`,`explicitlyDisabled`):Y(`executorMetrics`,`noObservedExecutorMetrics`,i),s>0?et(`rddStorageSnapshots`,`rddStorageSnapshots`,s):Y(`rddStorageSnapshots`,o===0?`noObservedStageSubmission`:`noRddStorageSnapshot`,i),c>0?et(`sqlPlan`,`resolvedSqlPlans`,c):l>0&&i?q(`sqlPlan`,`notEmitted`,`noResolvedSqlPlan`):Y(`sqlPlan`,`noSqlExecution`,i),u>0?et(`sparkConfiguration`,`environmentUpdates`,u):Y(`sparkConfiguration`,`noEnvironmentUpdate`,i),d===0?Y(`taskCoreTime`,`noTaskRecords`,i):rt(e?.runAggregates)?et(`taskCoreTime`,`taskRecords`,d):Y(`taskCoreTime`,`noUsableCoreTimeAggregate`,i),q(`infrastructureContext`,`outsideEventLog`,`outsideEventLogScope`),q(`sourceContext`,`outsideEventLog`,`outsideEventLogScope`),q(`costContext`,`outsideEventLog`,`outsideEventLogScope`)]}}function ot(e,t,n){return{app:e.app,stages:new Map(e.stages),executors:{added:[...e.executors.added],removed:[...e.executors.removed]},sql:new Map(e.sql),jobs:new Map(e.jobs),runAggregates:e.runAggregates,evidenceAvailability:e.evidenceAvailability,catalog:[...t],taskData:new Map(n)}}function st(e,t,n){e.app=n.app,e.stages=new Map(n.stages),e.executors={added:[...n.executors.added],removed:[...n.executors.removed]},e.sql=new Map(n.sql),e.jobs=new Map(n.jobs),e.runAggregates=n.runAggregates??null,e.evidenceAvailability=tt(n.evidenceAvailability)?n.evidenceAvailability:null,t.clear();for(let[e,r]of n.taskData)t.set(e,r);return[...n.catalog]}function ct(){return{app:null,stages:new Map,executors:{added:[],removed:[]},sql:new Map,jobs:new Map,runAggregates:null,evidenceAvailability:null}}function lt(){if(typeof window>`u`)return`dark`;try{let e=window.localStorage.getItem(`shuffle-works-theme`);if(e===`light`||e===`dark`)return e}catch{}return window.matchMedia?.(`(prefers-color-scheme: light)`).matches?`light`:`dark`}var ut=`shuffle-works-widget-density`;function dt(){if(typeof window>`u`)return`basic`;try{let e=window.localStorage.getItem(ut);if(e===`basic`||e===`advanced`)return e}catch{}return`basic`}var ft=Xe(e=>({appModel:ct(),catalog:[],configFindings:[],interpretation:null,exportProvenance:null,activeFileId:null,sessionCache:new Map,taskDataCache:new Map,parse:{pct:0,lines:0,etaMs:null},status:`idle`,shsParsing:!1,errorMessage:null,errorNonce:0,theme:lt(),widgetDensity:dt(),exportMode:!1,skippedLines:0,comparison:{active:!1,baselineId:null,candidateId:null},compareLoad:null,compareSeed:null,planGraph:{active:!1,stageId:null,initialScope:`segment`},modelResetCount:0,setCompareSeed:t=>e({compareSeed:t}),openComparison:(t,n)=>e(e=>(e.activeFileId!=null&&e.appModel.app&&e.sessionCache.set(e.activeFileId,ot(e.appModel,e.catalog,e.taskDataCache)),{comparison:{active:!0,baselineId:t,candidateId:n}})),setComparisonActive:t=>e(e=>({comparison:{...e.comparison,active:t}})),setCompareLoad:t=>e({compareLoad:t}),closeComparison:()=>e({comparison:{active:!1,baselineId:null,candidateId:null}}),openPlanGraph:(t,n)=>e({planGraph:{active:!0,stageId:t,initialScope:n?.initialScope??`segment`}}),closePlanGraph:()=>e({planGraph:{active:!1,stageId:null,initialScope:`segment`}}),resetModel:()=>e(e=>({appModel:ct(),catalog:[],configFindings:[],interpretation:null,taskDataCache:new Map,status:`idle`,shsParsing:!1,errorMessage:null,skippedLines:0,comparison:{active:!1,baselineId:null,candidateId:null},compareLoad:null,planGraph:{active:!1,stageId:null,initialScope:`segment`},modelResetCount:e.modelResetCount+1})),setStatus:t=>e({status:t}),setShsParsing:t=>e({shsParsing:t}),setParse:t=>e({parse:t}),setCatalog:t=>e({catalog:t}),setConfigFindings:t=>e({configFindings:t}),setFindings:(t,n,r)=>e(e=>({catalog:t,configFindings:n,...r===void 0?{}:{appModel:{...e.appModel,evidenceAvailability:r}}})),setInterpretation:t=>e({interpretation:t}),setTaskData:(t,n)=>e(e=>{let r=new Map(e.taskDataCache);return r.set(t,n),{taskDataCache:r}}),setActiveFile:t=>e({activeFileId:t}),setError:t=>e(e=>({errorMessage:t,errorNonce:t?e.errorNonce+1:e.errorNonce,status:t?`error`:e.status})),setTheme:t=>e({theme:t}),setWidgetDensity:t=>{try{window.localStorage.setItem(ut,t)}catch{}e({widgetDensity:t})},setSkippedLines:t=>e({skippedLines:t}),setEvidenceAvailability:t=>e(e=>({appModel:{...e.appModel,evidenceAvailability:t}}))}));function pt(e){return Qe(ft,e)}function mt(){return pt(e=>e.widgetDensity)}var ht=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function gt(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:ht(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var _t=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},vt=e=>{let t=_t(e);return t.charAt(0).toUpperCase()+t.slice(1)},yt=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),X={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function bt(e){return e!=null}function xt(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??X.width,a=e.size??e.height??X.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?yt(...c):yt(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??X[`stroke-width`])*Number(e.size??e.width??X.width)/Number(t.size??t.width??X.width):t.strokeWidth??X[`stroke-width`];return[`svg`,{...Object.entries(X).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&bt(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&bt(t.width)&&{[r(`width`)]:t.width},...`height`in t&&bt(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function St(e,t={}){return xt(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var Ct=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},wt=(0,l.createContext)({}),Tt=()=>(0,l.useContext)(wt),Et=(0,l.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:u=[],icon:d={node:u,aliases:[],size:24},...f},p)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:g=!1,nonScalingStroke:_=!1,color:ee=`currentColor`,className:v=``}=Tt()??{},y=!!c||Ct(f),[te,b,x=[]]=St(d,{color:e??ee,width:n??t??m,height:r??t??m,strokeWidth:i??h,absoluteStrokeWidth:a??g,nonScalingStroke:o??_,className:yt(v,s),hasA11yProp:y,attributes:f});return(0,l.createElement)(te,{ref:p,...b},[...x.map(([e,t])=>(0,l.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function Dt(e,t=[],n=[]){let r=typeof e==`string`?gt(e,t,n):e,i=(0,l.forwardRef)(({className:e,...t},n)=>(0,l.createElement)(Et,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=vt(r.name)),i}var Ot={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]};Ot.node;var kt=Dt(Ot),At={name:`chevron-up`,size:24,node:[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]};At.node;var jt=Dt(At),Mt={name:`file-text`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]};Mt.node;var Nt=Dt(Mt),Pt={incompleteRun:{name:`incomplete run`,tag:`INCMP`,thresholdSummary:()=>`an event log missing its terminal ApplicationEnd/job-completion event`,actionLabel:()=>void 0,genericRecommendation:()=>void 0},skew:{name:`task skew`,tag:`SKEW`,thresholdSummary:()=>`task duration skew above the configured ratio`,actionLabel:()=>`Fix task skew`,genericRecommendation:()=>`For join-driven skew, enable AQE skew-join handling (spark.sql.adaptive.skewJoin.enabled); otherwise salt the key or repartition on a better key to reduce task skew.`},stageShape:{name:`stage shape`,tag:`SHAPE`,thresholdSummary:()=>`low parallelism, data explosion, or task-count skew relative to core count`,actionLabel(e){switch(e.rule){case`lowParallelism`:return`Increase parallelism`;case`dataExplosion`:return`Check for exploding join`;case`taskStageSkew`:return`Fix straggler task`}},genericRecommendation(e){switch(e.rule){case`lowParallelism`:return`Too few tasks run relative to the cores available, leaving cluster capacity idle: repartition to use more of it.`;case`dataExplosion`:return`Output volume far exceeds input volume: check for an exploding join or a cross product.`;case`taskStageSkew`:return`A single straggler task gates the whole stage's wall-clock duration.`}}},tinyTask:{name:`tiny tasks`,tag:`TINY`,thresholdSummary:()=>`median task duration below the configured floor`,actionLabel:()=>`Coalesce small tasks`,genericRecommendation:()=>`Scheduler overhead may dominate: lower spark.sql.shuffle.partitions, or coalesce down to fewer, larger tasks.`},shuffle:{name:`shuffle I/O`,tag:`SHFL`,thresholdSummary:()=>`shuffle read above the configured minimum byte threshold`,actionLabel:()=>`Reduce shuffle size`,genericRecommendation:()=>`Consider increasing spark.sql.shuffle.partitions or adding a broadcast join to shrink the shuffle.`},partitionSizing:{name:`partition sizing`,tag:`PART`,thresholdSummary:()=>`partition byte size outside the configured target range`,actionLabel(e){switch(e.rule){case`shufflePartitionSkew`:return`Fix skewed partition`;case`lowShuffleParallelism`:return`Add shuffle partitions`;case`maxPartitionTooBig`:return`Repartition oversized data`}},genericRecommendation(e){switch(e.rule){case`shufflePartitionSkew`:return`For join skew, enable AQE skew-join handling (spark.sql.adaptive.skewJoin.enabled); otherwise salt the key or repartition on a better key.`;case`lowShuffleParallelism`:return`Raise spark.sql.shuffle.partitions so each partition is smaller.`;case`maxPartitionTooBig`:return`Repartition to break up the oversized partition before this stage.`}}},spill:{name:`spill`,tag:`SPILL`,thresholdSummary:e=>`single-task disk spill above ${e.singleTaskDiskGiB} GiB`,actionLabel:()=>`Reduce spill`,genericRecommendation:()=>`If the spill is skew-driven, fix task skew first: adding memory will not help. Otherwise raise spark.sql.shuffle.partitions or increase executor memory.`},gc:{name:`GC pressure`,tag:`GC`,thresholdSummary:()=>`JVM GC time share above the configured ratio`,actionLabel:e=>e.direction===`low`?`Right-size executor memory`:`Reduce GC pressure`,genericRecommendation:e=>e.direction===`low`?`Memory may be over-provisioned here: consider reducing spark.executor.memory for cost savings.`:`Reduce object creation, use primitive types, avoid UDFs, or increase executor memory to cut GC time.`},stageFailed:{name:`failed stage`,tag:`SFAIL`,thresholdSummary:()=>`a stage that failed outright`,actionLabel:()=>`Inspect stage failure`,genericRecommendation:()=>`Inspect the driver log for the failure reason and the job that triggered it.`},failures:{name:`failed tasks`,tag:`FAIL`,thresholdSummary:()=>`task failures above the configured rate`,actionLabel:()=>`Investigate task failures`,genericRecommendation:()=>`Investigate driver logs for executor instability or data-driven errors.`},retryWaste:{name:`retry waste`,tag:`RETRY`,thresholdSummary:()=>`retried task attempts consuming executor time`,actionLabel:()=>`Investigate retry cause`,genericRecommendation:()=>`Investigate executor loss or fetch failures behind the retried attempts.`},slowHost:{name:`slow executor host`,tag:`HOST`,thresholdSummary:e=>`a host running ${e.ratioWarn}x+ slower than its peers by mean task duration (per-executor byte/time dimensions use a separate, narrower ratio ladder starting at ${e.ratioTiers[0]}x; only those can reach critical on ratio alone)`,actionLabel(e){return e.variant===`durationShare`?`Fix data locality`:e.variant===`multiDim`?`Investigate degraded executor`:`Check slow host`},genericRecommendation(e){return e.variant===`durationShare`?`Check for data locality or partition assignment skewing work onto one node.`:e.variant===`multiDim`?`Investigate uneven partition assignment or a degraded executor.`:`Check what this host was running: it may just hold data locality for its tasks or carry one heavy stage, rather than a hardware fault. Enable spark.speculation to relaunch a lagging task automatically.`}},stageSlowness:{name:`slow stage`,tag:`SLOW`,thresholdSummary:()=>`a stage running far longer than its peers, not attributable to a single slow host`,actionLabel:()=>`Profile slow stage`,genericRecommendation:()=>`Often a partition-count problem: raise parallelism via spark.sql.shuffle.partitions or spark.default.parallelism, or check for a large per-task data volume driving heavy shuffle and spill.`},straggler:{name:`straggling task`,tag:`STRAG`,thresholdSummary:()=>`one or more tasks finishing far after the rest of their stage`,actionLabel:()=>`Fix stragglers`,genericRecommendation:()=>`Rule out a GC pause or a slow shuffle fetch before assuming a hardware issue. If a skewed key is the real cause, that is a candidate for AQE's skew-join handling.`},speculationWaste:{name:`speculation waste`,tag:`SPEC`,thresholdSummary:()=>`speculative task attempts that completed after the original`,actionLabel:()=>`Tune speculation settings`,genericRecommendation:()=>`If task durations are naturally variable rather than genuine stragglers, consider tuning spark.speculation.multiplier/quantile.`},coldStart:{name:`cold start`,tag:`COLD`,thresholdSummary:()=>`executor startup time above the configured floor`,actionLabel:()=>`Pre-warm cluster`,genericRecommendation:()=>`Keep a warm pool of idle executors, or if using dynamic allocation, raise the minimum/initial executor count so it does not scale up from zero.`},memoryUtilization:{name:`memory utilization`,tag:`MEM`,thresholdSummary:()=>`executor heap usage outside the configured band`,actionLabel(e){switch(e.variant){case`idleCores`:return`Reduce idle cores`;case`wasteModel`:return`Right-size executor memory`;case`memoryBand`:return e.dataUnavailable?`Enable memory metrics`:e.rule===`heapNearCapacity`?`Increase executor memory`:`Reduce executor memory`}},genericRecommendation(e){switch(e.variant){case`idleCores`:return`Reduce cluster size or enable dynamic allocation.`;case`wasteModel`:return`Review spark.executor.memory and executor count.`;case`memoryBand`:return e.dataUnavailable?void 0:e.rule===`heapNearCapacity`?`Memory may be too small: raise spark.executor.memory to avoid OOM/spill.`:`Memory may be over-provisioned: consider reducing spark.executor.memory for cost savings.`}}},utilization:{name:`executor utilization`,tag:`UTIL`,thresholdSummary:()=>`core occupancy below the configured floor across the run`,actionLabel:()=>`Reduce cluster size`,genericRecommendation:()=>`Consider reducing cluster size or enabling dynamic allocation.`},coreLocality:{name:`core locality`,tag:`LOCAL`,thresholdSummary:()=>`task placement missing data-local core assignment`,actionLabel:()=>`Fix data locality`,genericRecommendation:()=>`Check spark.locality.wait settings and executor/data colocation.`},cachingOpportunity:{name:`caching opportunity`,tag:`CACHE`,thresholdSummary:()=>`a dataset re-read from source multiple times with no cache/persist`,actionLabel:e=>e.variant===`composite`?`Cache repeated result`:`Cache shared table`,genericRecommendation:e=>e.variant===`composite`?`Cache or persist the repeated join/union result so it is computed once instead of recomputed per query.`:`Cache the shared DataFrame, or broadcast it if it is a small join lookup.`},cacheUtilization:{name:`cache utilization`,tag:`CSTOR`,thresholdSummary:()=>`cached partitions evicted or spilled to disk`,actionLabel:e=>e.dataUnavailable?`Enable block-update logging`:`Increase cache memory`,genericRecommendation(e){switch(e.variant){case`partialCache`:return`Increase executor memory or reduce the cached dataset size so more of it stays cached.`;case`diskSpillover`:return`Executor memory may be too small for this cached dataset: increase executor memory or reduce its size.`}}},jobFailureRate:{name:`job failure rate`,tag:`JOBS`,thresholdSummary:()=>`job failure rate above the configured threshold`,actionLabel:()=>`Investigate failed jobs`,genericRecommendation:()=>`Inspect the driver log for the failed job(s) and the stage failures that triggered them.`},autoscalingChurn:{name:`autoscaling churn`,tag:`CHRN`,thresholdSummary:()=>`executor add/remove churn above the configured rate`,actionLabel:()=>`Reduce autoscaling churn`,genericRecommendation:()=>`This looks like wasteful re-provisioning rather than normal scale-down: consider raising spark.dynamicAllocation.executorIdleTimeout or widening the minExecutors/maxExecutors bounds to reduce flapping.`},configAudit:{name:`config audit`,tag:`CFG`,thresholdSummary:()=>`a Spark conf value outside the recommended range`,actionLabel(e){switch(e.property){case`spark.shuffle.service.enabled`:return`Enable shuffle service`;case`spark.dynamicAllocation.minExecutors`:return`Fix autoscaling bounds`;case`spark.dynamicAllocation.maxExecutors`:return`Set max executors`;case`spark.serializer`:return`Switch to Kryo`;case`spark.executor.memoryOverhead`:return`Raise memory overhead`}},genericRecommendation(e){switch(e.property){case`spark.shuffle.service.enabled`:return`Set spark.shuffle.service.enabled=true so shuffle data survives executor removal.`;case`spark.dynamicAllocation.minExecutors`:return`Set the minimum executor bound at or below the maximum.`;case`spark.dynamicAllocation.maxExecutors`:return`Set spark.dynamicAllocation.maxExecutors to cap cluster growth.`;case`spark.serializer`:return`Consider spark.serializer=org.apache.spark.serializer.KryoSerializer for faster, smaller buffers.`;case`spark.executor.memoryOverhead`:return`Raise executor memoryOverhead above Spark's default floor to avoid off-heap OOM-kills.`}}},duplicatePlanSubtree:{name:`duplicate plan subtree`,tag:`PLAN`,thresholdSummary:()=>`the same physical plan subtree executed more than once`,actionLabel:()=>`Dedupe repeated subtree`,genericRecommendation:()=>`Check whether the repeated subtree could be computed once and reused, or cache/persist the shared computation.`},smallFiles:{name:`small files`,tag:`PLAN`,thresholdSummary:()=>`output files below the configured target size`,actionLabel:e=>e.direction===`write`?`Coalesce output files`:`Compact small files`,genericRecommendation:e=>e.direction===`write`?`Repartition or coalesce before writing to raise the average file size.`:`Compact the upstream output so fewer, larger files are produced.`},underBroadcast:{name:`missed broadcast join`,tag:`PLAN`,thresholdSummary:()=>`a join below the configured size floor that skipped broadcast`,actionLabel:()=>`Use broadcast join`,genericRecommendation:()=>`This could have been a broadcast join: consider a broadcast() hint or raising spark.sql.autoBroadcastJoinThreshold.`},overBroadcast:{name:`oversized broadcast join`,tag:`PLAN`,thresholdSummary:()=>`a broadcast join above the configured size ceiling`,actionLabel:()=>`Fix oversized broadcast`,genericRecommendation:()=>`Check for a misapplied broadcast hint or a misconfigured spark.sql.autoBroadcastJoinThreshold.`}};function Ft(e){return Pt[e]}var It=134217728,Lt=8e3,Rt=1.5,Z={critical:0,warning:1,info:2},zt=Object.fromEntries(Object.keys(Pt).map(e=>[e,Pt[e].tag]));function Bt(e){return zt[e]??e.toUpperCase()}var Vt={skew:`Skew spill: a few heavy tasks spill while most do not; rebalance partitioning`,volume:`Volume spill: most tasks spill because data exceeds memory; add partitions`,unclassified:`Spill cause could not be classified`},Ht={skew:`skew`,volume:`vol`,unclassified:`?`},Ut=8;function Wt(e,t=Ut){return e.length<=t?e.join(`, `):`${e.slice(0,t).join(`, `)}, +${e.length-t} more`}function Gt(e){let t;for(let n of e)(t===void 0||Z[n.impactBand]<Z[t])&&(t=n.impactBand);return t}function Kt(e){let t=String(e),n=t.match(/((?:hdfs?|s3[an]?):\/\/\S+|\/[^\s,)]+)/i);if(!n)return t;let r=n[1].replace(/[/,]+$/,``).split(`/`).filter(Boolean);return r[r.length-1]||t}function qt(e){return e.split(`::`)[0]||e}function Jt(e){return!e||e<=0?`—`:e>=1e9?`${(e/1e9).toFixed(1)} GB`:e>=1e6?`${(e/1e6).toFixed(0)} MB`:`${(e/1e3).toFixed(0)} KB`}function Yt(e){return e/1e6}function Xt(e){return e.value??0}function Q(e,t){switch(e){case`pct`:return`${t}%`;case`pctFraction`:return`${Math.round(t*100)}%`;case`ratio`:return`${t}×`;case`ms`:return tn(t);case`count`:return`${t}`}}var Zt={shuffleReadBytes:`bytes`,memoryBytesSpilled:`bytes`,shuffleReadMax:`bytes`,avgFileSizeBytes:`bytes`,smallerSideBytes:`bytes`,broadcastBytes:`bytes`,speculationWasteMs:`ms`,retryWasteMs:`ms`,taskDurationP50:`ms`,stageDurationMinutes:`minutes`,"P95/median":`ratio`,"max/median":`ratio`,pRatio:`ratio`,oiRatio:`ratio`,taskStageSkew:`ratio`,hostMeanRatio:`ratio`,execMaxMedianRatio:`ratio`,gcPct:`pct`,failureRate:`pct`,stragglerShare:`pct`,hostDurationShare:`pctFraction`,taskCount:`count`,speculativeTasks:`count`,subtreeOccurrences:`count`};function Qt(e){return e>0&&e<1e3?`${Math.round(e)} B`:Jt(e)}function $t(e){let t=e.metric?Zt[e.metric]:void 0;if(!t||e.value==null)return null;switch(t){case`bytes`:return Qt(e.value);case`minutes`:return tn(e.value*6e4);case`ms`:return Q(`ms`,e.value);case`ratio`:return Q(`ratio`,e.value);case`pct`:return Q(`pct`,e.value);case`pctFraction`:return Q(`pctFraction`,e.value);case`count`:return Q(`count`,e.value)}}function en(e){let t=$t(e),n=e.impactEstimate?.wallClock,r=[t,n?`~${tn(n.high)}`:null].filter(Boolean);return r.length>0?r.join(` · `):null}function tn(e){return!e||e<=0?`—`:e<1e3?`${Math.round(e)}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m ${Math.floor(e%6e4/1e3)}s`}function nn(e){let t=e.shuffleReadBytes??0;if(t<=0)return null;let n=Math.min(Lt,Math.ceil(t/It)),r=e.taskCount??0;return n<=r*Rt?null:{recommended:n,current:r}}function rn(e,t){if(e.length===0)return{labels:[],data:[]};let n=e[0],r=e[0];for(let t=1;t<e.length;t++)e[t]<n&&(n=e[t]),e[t]>r&&(r=e[t]);let i=(r-n)/t||1,a=Array(t).fill(0);for(let r of e)a[Math.min(Math.floor((r-n)/i),t-1)]++;return{labels:a.map((e,t)=>Math.round(n+t*i)),data:a}}function an(e){return e===0?`0s`:tn(e)}function on(e,t){let n=an(e),r=an(t);return n===r?r:`${n}-${r}`}var sn=36e5,cn=3686400,ln=.1,un=e=>(Math.round(e*10)/10).toLocaleString(`en-US`,{minimumFractionDigits:1,maximumFractionDigits:1});function dn(e){let t=Math.round(e.value*10)/10;switch(e.unit){case`bytes`:return Jt(e.value);case`ms`:return an(e.value);case`mbSeconds`:{let n=e.value/cn;return n>=ln?`${un(n)} GB-h`:`${t.toLocaleString(`en-US`)} MB-s`}case`coreHours`:return`${t.toFixed(1)} core-h`;case`coreMs`:{let t=e.value/sn;return t>=ln?`${un(t)} core-h`:`${un(e.value/1e3)} core-s`}default:return String(e.value)}}function fn(e){return/^0(\.0+)?(?:[^0-9.]|$)/.test(e)}function pn(e){return e>=10?String(Math.round(e)):e.toFixed(1).replace(/\.0$/,``)}var mn=36e5,$=c();function hn(e){if(e.length===0)return[];let t=[...e].sort((e,t)=>e[0]-t[0]),n=[[t[0][0],t[0][1]]];for(let e=1;e<t.length;e++){let r=n[n.length-1],i=t[e];i[0]<=r[1]?r[1]=Math.max(r[1],i[1]):n.push([i[0],i[1]])}return n}function gn(e,t){let n=[];for(let r of e){let e=t.get(r);e&&e.submittedAt!=null&&e.completedAt!=null&&n.push([e.submittedAt,e.completedAt])}return hn(n).reduce((e,[t,n])=>e+(n-t),0)}function _n(e){let t=new Map;for(let n of e){let e=t.get(n.type)??[];e.push(n),t.set(n.type,e)}return t}function vn(e){return`stageIds`in e?e.stageIds:e.stageId==null?[]:[e.stageId]}function yn(e,t,n){let r=[...new Set(t.flatMap(vn))],i=t.reduce((e,t)=>e+(t.impactEstimate?.wallClock?.high??0),0),a=r.length>0?Math.min(i,gn(r,n)):i;return{kind:`time`,type:e,findingCount:t.length,stageCount:r.length,recoverableMsHigh:a,findings:t}}function bn(e,t){let n=t[0].impactEstimate.rawWaste.unit,r=t.reduce((e,t)=>e+(t.impactEstimate?.rawWaste?.value??0),0);return{kind:`resource`,type:e,findingCount:t.length,unit:n,total:r,findings:t}}function xn(e,t){let n={};for(let e of t)n[e.impactBand]=(n[e.impactBand]??0)+1;return{kind:`count`,type:e,findingCount:t.length,byImpactBand:n,findings:t}}var Sn={time:0,resource:1,count:2};function Cn(e,t){let n=[];for(let[r,i]of _n(e)){let e=i.filter(e=>e.impactEstimate?.wallClock!=null),a=i.filter(e=>e.impactEstimate?.wallClock==null&&e.impactEstimate?.rawWaste!=null),o=i.filter(e=>e.impactEstimate?.wallClock==null&&e.impactEstimate?.rawWaste==null);if(e.length>0&&n.push(yn(r,e,t)),a.length>0){let e=new Map;for(let t of a){let n=t.impactEstimate.rawWaste.unit,r=e.get(n)??[];r.push(t),e.set(n,r)}for(let t of e.values())n.push(bn(r,t))}o.length>0&&n.push(xn(r,o))}return n.sort((e,t)=>{let n=Sn[e.kind]-Sn[t.kind];return n===0?e.kind===`time`&&t.kind===`time`?t.recoverableMsHigh-e.recoverableMsHigh:(Z[Gt(e.findings)??`info`]??9)-(Z[Gt(t.findings)??`info`]??9):n})}function wn(e){if(e.kind===`time`){let t=on(e.recoverableMsHigh,e.recoverableMsHigh);return{stat:`×${e.findingCount} · ${t} recoverable`,statTitle:`${e.findingCount} findings of this type; up to ${t} of run time could be recovered by fixing them`}}return e.kind===`resource`?{stat:`×${e.findingCount} · resource-cost projection`,statTitle:`${e.findingCount} findings of this type; a resource-cost estimate (not run time) is projected for fixing them`}:{stat:Object.entries(e.byImpactBand).map(([e,t])=>`${t} ${e}`).join(`, `),statTitle:`${e.findingCount} findings of this type, by impact`}}function Tn(e){return!(e.type===`memoryUtilization`&&e.variant===`memoryBand`&&e.dataUnavailable)}function En(e){return e.type===`incompleteRun`||`dataUnavailable`in e&&e.dataUnavailable?!1:Tn(e)}var Dn=0,On=1,kn=2;function An(e){let t=e.impactEstimate;return t?.wallClock?Dn:t?.rawWaste?On:kn}function jn(e){return[...e].sort((e,t)=>{let n=An(e)-An(t);return n===0?An(e)===Dn?t.impactEstimate.wallClock.high-e.impactEstimate.wallClock.high:(Z[e.impactBand]??9)-(Z[t.impactBand]??9):n})}function Mn(e,t){return Cn(e,t).map(e=>{let t=jn(e.findings);return{kind:e.kind,type:e.type,unit:e.kind===`resource`?e.unit:null,band:t[0].impactBand,members:t,...wn(e)}})}var Nn=`docs/tuning-reference`,Pn={"bottleneck-stage-shape":`bottleneck-skew`,"bottleneck-stage-slowness":`bottleneck-slow-host`,"bottleneck-partition-sizing":`bottleneck-shuffle`,"bottleneck-speculation-waste":`bottleneck-straggler`,"bottleneck-core-locality":`bottleneck-utilization`,"bottleneck-caching-opportunity":`bottleneck-utilization`,"bottleneck-autoscaling-churn":`cluster-config`,"bottleneck-cache-utilization":`memory-model`};function Fn(e){return e.startsWith(`metric-`)?`metrics`:e.startsWith(`config-`)?`config`:Pn[e]??e}function In(e){let t=String(e).replace(/^#/,``);return`${Nn}/${Fn(t)}.html#${encodeURIComponent(t)}`}var Ln=new Set([`#intro`,`#spark-architecture`,`#memory-model`,`#partitioning`,`#joins`,`#shuffle`,`#data-formats`,`#table-formats`,`#caching`,`#pyspark`,`#aqe`,`#cluster-config`,`#anti-patterns`,`#metrics`,`#config`,`#bottleneck-cold-start`,`#bottleneck-failures`,`#bottleneck-gc`,`#bottleneck-job-failure-rate`,`#bottleneck-retry-waste`,`#bottleneck-shuffle`,`#bottleneck-skew`,`#bottleneck-slow-host`,`#bottleneck-spill`,`#bottleneck-straggler`,`#bottleneck-tiny-tasks`,`#bottleneck-utilization`,`#bottleneck-memory-utilization`,`#bottleneck-broadcast-sizing`,`#bottleneck-duplicate-plan-subtree`,`#bottleneck-small-files`,`#bottleneck-stage-shape`,`#bottleneck-stage-slowness`,`#bottleneck-partition-sizing`,`#bottleneck-speculation-waste`,`#bottleneck-core-locality`,`#bottleneck-caching-opportunity`,`#bottleneck-autoscaling-churn`,`#bottleneck-cache-utilization`,`#config-autoscale-bounds`,`#config-memory-overhead`,`#config-serializer`,`#config-shuffle-service`,...Object.values({"task-duration":`#metric-task-duration`,"shuffle-read-bytes":`#metric-shuffle-read-bytes`,"shuffle-write-bytes":`#metric-shuffle-write-bytes`,"memory-bytes-spilled":`#metric-memory-bytes-spilled`,"disk-bytes-spilled":`#metric-disk-bytes-spilled`,"jvm-gc-time":`#metric-jvm-gc-time`,gcpct:`#metric-gcpct`,"executor-run-time":`#metric-executor-run-time`,"fetch-wait-time-ratio":`#metric-fetch-wait-time-ratio`,"input-bytes":`#metric-input-bytes`,"output-bytes":`#metric-output-bytes`,"io-ratio":`#metric-io-ratio`,"peak-execution-memory":`#metric-peak-execution-memory`,"failed-tasks":`#metric-failed-tasks`,"speculative-tasks":`#metric-speculative-tasks`,"first-stage-submitted-at":`#metric-first-stage-submitted-at`,"executor-count":`#metric-executor-count`,"stage-duration":`#metric-stage-duration`})]);function Rn(e){return Ln.has(String(e))}function zn(e){let t=new Set(e.map(e=>e.docAnchor));if(t.size!==1)return;let[n]=t;return n}function Bn(e){return`docs/user-guide/understanding-findings.html#${Bt(e).toLowerCase()}`}var Vn=`docs/user-guide/alternative-log-retrieval.html`,Hn=f(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function Un({className:e,variant:t=`default`,render:n,...i}){return o({defaultTagName:`span`,props:r({className:K(Hn({variant:t}),e)},i),render:n,state:{slot:`badge`,variant:t}})}var Wn=`#intro`,Gn=(0,l.createContext)(null);function Kn({children:e}){let[t,n]=(0,l.useState)(!1),[r,i]=(0,l.useState)({kind:`site`,source:`reference`,path:In(Wn)}),a=(0,l.useCallback)((e=Wn)=>{i({kind:`site`,source:`reference`,path:In(e)}),n(!0)},[]),o=(0,l.useCallback)(e=>{i({kind:`site`,source:`guide`,path:e}),n(!0)},[]),s=(0,l.useCallback)(()=>n(!1),[]),c=(0,l.useMemo)(()=>({open:a,openSite:o,close:s,isOpen:t,target:r}),[a,o,s,t,r]);return(0,$.jsx)(Gn.Provider,{value:c,children:e})}function qn(){let e=(0,l.useContext)(Gn);if(!e)throw Error(`useDocs outside DocsProvider`);return e}function Jn(){return(0,l.useContext)(Gn)}function Yn({anchor:e,children:t}){let{open:n}=qn(),r=pt(e=>e.exportMode);return Rn(e)?r?(0,$.jsx)($.Fragment,{children:t}):(0,$.jsx)(`a`,{href:In(e),className:`text-primary underline-offset-4 hover:underline`,onClick:t=>{t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.button!==0||(t.preventDefault(),n(e))},children:t}):null}var Xn={INCMP:{expansion:`Incomplete run`,description:`This event log never recorded an application-end event, so other findings and metrics reflect only what was captured.`},SKEW:{expansion:`Task skew`,description:`A small number of tasks take much longer than their peers.`},SHFL:{expansion:`Shuffle I/O`,description:`Tasks are moving a large amount of intermediate data between stages.`},SPILL:{expansion:`Memory and disk spill`,description:`Tasks are writing data out of memory, which slows execution.`},GC:{expansion:`Garbage collection pressure`,description:`Tasks are spending an unusually large share of time reclaiming memory.`},COLD:{expansion:`Executor cold start`,description:`New executors are taking time to become available for work.`},UTIL:{expansion:`Low utilization`,description:`Allocated executors are idle for a large share of the application run.`},MEM:{expansion:`Memory utilization`,description:`Executor memory or core capacity may be over- or under-provisioned.`},LOCAL:{expansion:`Core usage locality`,description:`Tasks are running without process- or node-local data placement more than expected.`},HOST:{expansion:`Slow host`,description:`One executor is substantially slower than its peers.`},FAIL:{expansion:`Failed tasks`,description:`Tasks are failing often enough to affect the stage.`},STRAG:{expansion:`Straggler tasks`,description:`A few tasks are much slower than the rest of their stage.`},SPEC:{expansion:`Speculation waste`,description:`Speculative task attempts used a lot of executor time without confirming a genuine straggler.`},RETRY:{expansion:`Retry waste`,description:`Repeated task attempts are consuming avoidable execution time.`},TINY:{expansion:`Tiny tasks`,description:`Many very short tasks are adding scheduling overhead.`},SFAIL:{expansion:`Failed stage`,description:`A stage attempt failed outright.`},PART:{expansion:`Partition sizing`,description:`Shuffle partitions are too large, too uneven, or too few for the work.`},SLOW:{expansion:`Stage slowness`,description:`A stage is slow overall without a more specific diagnosed cause.`},SHAPE:{expansion:`Stage shape`,description:`The stage has an inefficient task count, output shape, or task-to-stage balance.`},CACHE:{expansion:`Caching opportunity`,description:`A reusable dataset may benefit from being persisted between stages.`},CSTOR:{expansion:`Cache storage`,description:`A persisted dataset is not fully cached in memory or is spilling to disk.`},CHRN:{expansion:`Autoscaling churn`,description:`Executors are being stood up and torn down again before they can do useful work.`},JOBS:{expansion:`Job failure rate`,description:`A large share of completed jobs did not succeed.`},CFG:{expansion:`Configuration audit`,description:`Configuration settings may cause reliability or efficiency problems.`},PLAN:{expansion:`Plan advisor`,description:`The SQL execution plan has a pattern worth reviewing.`}};function Zn(){return pt(e=>e.interpretation)}function Qn(e,t){return e.findings[t]}var $n=new WeakMap;function er(e,t){if(!e)return null;let n=$n.get(e);return n||(n=new Map(e.findings.map((t,n)=>[t,e.data.savings[n]])),$n.set(e,n)),n.get(t)??null}function tr(e){return er(Zn(),e)}function nr(e,t){if(!e)return[];let n=new Set(t);return e.data.savingsRank.map(t=>e.findings[t]).filter(e=>e!=null&&n.has(e))}function rr(e){return e?e.data.rollup.eligibleIndexes.map(t=>e.findings[t]).filter(e=>e!=null):[]}function ir({members:e,...t}){return{...t,key:`${t.kind}-${t.type}-${t.unit??``}`,findings:e}}function ar(e,t,n){if(!e)return{eligible:[],groups:[]};let r=new Set(t),i=rr(e).filter(e=>r.has(e));return{eligible:i,groups:e.findings.every(e=>r.has(e))?e.data.rollup.groups.map(({memberIndexes:t,...n})=>ir({...n,members:t.map(t=>e.findings[t]).filter(e=>e!=null)})):Mn(i,n).map(ir)}}function or({children:e}){return mt()===`advanced`?(0,$.jsx)($.Fragment,{children:e}):null}var sr={critical:`bg-critical`,warning:`bg-warning`,info:`bg-info`},cr={critical:`text-critical`,warning:`text-warning`,info:`text-info`},lr={critical:`border-critical`,warning:`border-warning`,info:`border-info`},ur=f(`inline-block size-2 shrink-0 rounded-full`,{variants:{impactBand:{...sr,muted:`bg-muted-foreground`}},defaultVariants:{impactBand:`info`}}),dr=f(`gap-1.5 border-transparent`,{variants:{impactBand:{critical:`bg-critical/10 text-critical`,warning:`bg-warning/10 text-warning`,info:`bg-info/10 text-info`}},defaultVariants:{impactBand:`info`}});function fr({impactBand:e,className:t}){return(0,$.jsx)(`span`,{"aria-hidden":`true`,className:K(ur({impactBand:e}),t)})}function pr({type:e,impactBand:t,className:n,plainBadge:r,docAnchor:i}){let a=Jn(),o=mt(),s=pt(e=>e.exportMode),c=Zn()?.data.detectors[e]?.docAnchor??void 0,l=Bt(e),u=Xn[l],d=r?void 0:u?`${u.expansion}: ${u.description}`:void 0,f=r?void 0:i&&Rn(i)?i:c,p=u?.expansion??l,m=Bn(e),h=s?void 0:f?In(f):r?void 0:m,g=!r&&!s&&o===`advanced`&&!!f,_=(0,$.jsxs)(Un,{title:d,className:K(dr({impactBand:t}),`h-6`,h&&`underline decoration-dotted underline-offset-2`,g?K(`rounded-r-none`,n):n),render:h?(0,$.jsx)(`a`,{href:h,onClick:e=>{!a||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0||(e.preventDefault(),f?a.open(f):a.openSite(m))}}):void 0,children:[(0,$.jsx)(fr,{impactBand:t}),l]});return r?_:(0,$.jsxs)(`span`,{className:`inline-flex items-center`,children:[_,g?(0,$.jsx)(or,{children:(0,$.jsx)(`a`,{href:m,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`SparkForensics guide: ${p}`,title:`SparkForensics guide: ${p}`,onClick:e=>{!a||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0||(e.preventDefault(),a.openSite(m))},className:K(`tap-target-comfortable tap-target-comfortable--sm inline-flex h-6 shrink-0 items-center rounded-r-4xl border border-transparent py-0.5 pr-2 pl-1 text-xs font-medium whitespace-nowrap transition-colors`,dr({impactBand:t}),n,`text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`),children:(0,$.jsx)(Nt,{"aria-hidden":`true`,className:`size-3`})})}):null]})}function mr({label:e,impactBand:t,title:n,className:r}){return(0,$.jsx)(Un,{title:n,className:K(dr({impactBand:t}),`font-mono`,r),children:e})}function hr({...e}){return(0,$.jsx)(a,{"data-slot":`collapsible`,...e})}function gr({...e}){return(0,$.jsx)(s,{"data-slot":`collapsible-trigger`,...e})}function _r({className:e,...t}){return(0,$.jsx)(i,{"data-slot":`collapsible-content`,className:K(`h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-150 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none`,e),...t})}var vr=(0,l.createContext)(!0),yr=()=>(0,l.useContext)(vr);export{Xt as $,Rn as A,Ht as B,Kn as C,Hn as D,Un as E,jn as F,pn as G,rn as H,Mn as I,Q as J,tn as K,hn as L,Cn as M,En as N,Vn as O,Tn as P,Yt as Q,Z as R,Yn as S,Jn as T,an as U,Vt as V,Jt as W,Wt as X,dn as Y,on as Z,nr as _,at as _t,gr as a,Gt as at,Zn as b,f as bt,lr as c,Nt as ct,pr as d,Dt as dt,Kt as et,dr as f,ft,Qn as g,ot as gt,rr as h,st as ht,_r as i,Bt as it,zn as j,In as k,cr as l,jt as lt,ar as m,mt,yr as n,nn as nt,mr as o,Pt as ot,or as p,pt,en as q,hr as r,qt as rt,sr as s,Ft as st,vr as t,fn as tt,fr as u,kt as ut,er as v,rt as vt,qn as w,Xn as x,tr as y,K as yt,mn as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{R as n,at as r,d as i,p as a}from"./DisclosureContext-LYzHroHO.js";import{p as o}from"./plan-graph-vendor-B0sEms9Z.js";import{h as s,m as c}from"./useRecentFiles-BrBl-AP1.js";import{D as l,S as u,x as d}from"./index-CEM9bz_x.js";import{a as f,o as p,r as m,t as h}from"./Dashboard-Bo_1jGqH.js";import{i as g,r as _}from"./impact-sort-7z0ZcBZf.js";import{n as v,t as y}from"./finding-anchor-DF1cSHO1.js";import{t as b}from"./usePagedRows-BjPOpUU8.js";import{n as x,t as S}from"./useSortMode-CU0vzThu.js";var C=e(t(),1),w=o();function T({finding:e}){let t=v([e]);return(0,w.jsxs)(`li`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`space-y-2 ${y} transition-colors ${t.flashClassName}`,children:[e.stageIds.length>0?(0,w.jsx)(f,{pills:e.stageIds.map(e=>({id:e}))}):null,(0,w.jsxs)(`p`,{children:[e.recommendation,` `,(0,w.jsx)(h,{finding:e})]})]})}var E=(0,C.memo)(function({catalog:e,defaultCollapsed:t=!0}){let{sortMode:o,setSortMode:f,orderBy:h}=S(),[v,y]=(0,C.useState)(!t),[E,D]=(0,C.useState)(0),{findings:O,pills:k,groupConfidence:A}=(0,C.useMemo)(()=>{let t=c(e,`duplicatePlanSubtree`).sort((e,t)=>n[e.impactBand]-n[t.impactBand]);return{findings:t,pills:[...new Set(t.flatMap(e=>e.stageIds))].map(e=>({id:e})),groupConfidence:t.every(e=>e.confidence===t[0]?.confidence)?t[0]:void 0}},[e]),j=h(O,e=>[e],g),M=l(),N=M?j.findIndex(e=>e===M.finding):null,{totalPages:P,effectivePage:F,visible:I}=b(j,E,D,N);return O.length===0?null:(0,w.jsxs)(u,{title:`Redundant Plan Subtree`,impactBand:r(O),open:v,onOpenChange:y,badges:(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(i,{type:`duplicatePlanSubtree`,impactBand:r(O)??`info`,className:d}),_(O,O.length,v)?(0,w.jsx)(x,{mode:o,onChange:f}):null]}),statusBadge:(0,w.jsx)(a,{children:(0,w.jsx)(s,{confidence:A?.confidence,validationRequired:A?.validationRequired,evidenceKey:`sqlPlan`})}),summary:(0,w.jsx)(p,{value:`${k.length} stage${k.length===1?``:`s`}`,context:`${O.length} finding${O.length===1?``:`s`} flagged`}),children:[(0,w.jsx)(`ul`,{className:`space-y-3 text-sm`,children:I.map(e=>(0,w.jsx)(T,{finding:e},e.id))}),(0,w.jsx)(m,{page:F,totalPages:P,onPrev:()=>D(e=>e-1),onNext:()=>D(e=>e+1)})]})});export{E as DuplicatePlanSubtree};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{$ as n,J as r,R as i,at as a,d as o,u as s}from"./DisclosureContext-LYzHroHO.js";import{p as c}from"./plan-graph-vendor-B0sEms9Z.js";import{D as l,S as u}from"./index-CEM9bz_x.js";import{o as d,r as f,t as p}from"./Dashboard-Bo_1jGqH.js";import{n as m}from"./finding-anchor-DF1cSHO1.js";import{t as h}from"./usePagedRows-BjPOpUU8.js";var g=e(t(),1),_=c();function v({finding:e}){let t=m([e]);return(0,_.jsxs)(`div`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`transition-colors ${t.flashClassName}`,children:[(0,_.jsxs)(`p`,{className:`flex flex-wrap items-start gap-2`,children:[(0,_.jsx)(s,{impactBand:e.impactBand,className:`mt-1.5`}),(0,_.jsx)(`strong`,{children:r(`pct`,n(e))}),` average executor utilization`]}),(0,_.jsx)(p,{finding:e}),(0,_.jsx)(`p`,{children:e.recommendation})]})}var y=(0,g.memo)(function({catalog:e,defaultCollapsed:t=!0}){let[s,c]=(0,g.useState)(0),p=(0,g.useMemo)(()=>e.filter(e=>e.type===`utilization`).slice().sort((e,t)=>i[e.impactBand]-i[t.impactBand]),[e]),m=l(),y=m?p.findIndex(e=>e===m.finding):null,{totalPages:b,effectivePage:x,visible:S}=h(p,s,c,y);return p.length===0?null:(0,_.jsxs)(u,{title:`Executor Utilization`,impactBand:a(p),badges:(0,_.jsx)(o,{type:`utilization`,impactBand:a(p)??`info`}),defaultCollapsed:t,summary:(0,_.jsx)(d,{value:`${r(`pct`,n(p[0]))} average`,context:`${p.length} item${p.length===1?``:`s`} flagged`}),children:[(0,_.jsx)(`div`,{className:`space-y-2 text-sm`,children:S.map(e=>(0,_.jsx)(v,{finding:e},e.id))}),(0,_.jsx)(f,{page:x,totalPages:b,onPrev:()=>c(e=>e-1),onNext:()=>c(e=>e+1)})]})});export{y as ExecutorUtilization};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{K as n,at as r,d as i,p as a}from"./DisclosureContext-LYzHroHO.js";import{p as o}from"./plan-graph-vendor-B0sEms9Z.js";import{h as s}from"./useRecentFiles-BrBl-AP1.js";import{D as c,S as l}from"./index-CEM9bz_x.js";import{o as u,r as d,t as f}from"./Dashboard-Bo_1jGqH.js";import{r as p}from"./impact-sort-7z0ZcBZf.js";import{n as m,t as h}from"./finding-anchor-DF1cSHO1.js";import{t as g}from"./usePagedRows-BjPOpUU8.js";import{n as _,t as v}from"./useSortMode-CU0vzThu.js";import{t as y}from"./StageHeader-BSV8ALhT.js";var b=e(t(),1),x=o(),S=`GC % = total JVM GC time ÷ total executor run time; it can exceed 100% when GC pauses overlap many concurrent task threads.`;function C(e){return[...e].sort((e,t)=>(typeof t.value==`number`?t.value:0)-(typeof e.value==`number`?e.value:0))}function w({finding:e,appModel:t}){let r=m([e]),i=(e.stageId==null?void 0:t.stages.get(e.stageId))?.executorRunTime;return(0,x.jsxs)(`li`,{ref:r.ref,tabIndex:r.tabIndex,"data-flashed":r.dataFlashed,className:`space-y-2 ${h} transition-colors ${r.flashClassName}`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,x.jsx)(y,{stageId:e.stageId,appModel:t}),(0,x.jsx)(a,{children:(0,x.jsx)(s,{confidence:e.confidence,validationRequired:e.validationRequired})})]}),(0,x.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`GC: `,(0,x.jsxs)(`strong`,{children:[e.value,`%`]}),` · Executor run time:`,` `,(0,x.jsx)(`strong`,{children:n(i??0)})]}),(0,x.jsx)(f,{finding:e}),(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.recommendation})]})}function T({title:e,findings:t,appModel:n,page:r,setPage:i,routeTarget:a,orderBy:o}){let s=o(C(t),e=>[e],e=>e.stageId),c=a?s.findIndex(e=>e===a.finding):null,{totalPages:l,effectivePage:u,visible:f}=g(s,r,i,c);return(0,x.jsxs)(`section`,{className:`space-y-2`,children:[(0,x.jsxs)(`h4`,{className:`font-heading text-sm font-medium`,children:[e,` · `,t.length,` stage`,t.length===1?``:`s`]}),(0,x.jsx)(`ul`,{className:`space-y-3`,children:f.map(e=>(0,x.jsx)(w,{finding:e,appModel:n},e.stageId))}),(0,x.jsx)(d,{page:u,totalPages:l,onPrev:()=>i(e=>e-1),onNext:()=>i(e=>e+1)})]})}function E({catalog:e,appModel:t,defaultCollapsed:n=!0}){let[o,s]=(0,b.useState)(0),[d,f]=(0,b.useState)(0),{sortMode:m,setSortMode:h,orderBy:g}=v(),[y,C]=(0,b.useState)(!n),w=c(),E=(0,b.useRef)(!1);(0,b.useEffect)(()=>{if(!E.current){E.current=!0;return}s(0),f(0)},[t]);let D=e.filter(e=>e.type===`gc`);if(D.length===0)return null;let O=D.filter(e=>e.direction!==`low`),k=D.filter(e=>e.direction===`low`),A=r(D),j=[...D].sort((e,t)=>(typeof t.value==`number`?t.value:0)-(typeof e.value==`number`?e.value:0))[0];return(0,x.jsx)(l,{title:`GC Pressure`,impactBand:A,badges:(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(i,{type:`gc`,impactBand:A??`info`}),p(D,D.length,y)?(0,x.jsx)(_,{mode:m,onChange:e=>{h(e),s(0),f(0)}}):null]}),defaultCollapsed:n,open:y,onOpenChange:C,summary:(0,x.jsx)(u,{value:`${j.value}%`,context:`${D.length} stage${D.length===1?``:`s`} flagged`}),children:(0,x.jsxs)(`div`,{className:`space-y-4`,children:[(0,x.jsx)(a,{children:(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:S})}),O.length>0&&(0,x.jsx)(T,{title:`GC overhead`,findings:O,appModel:t,page:o,setPage:s,routeTarget:w,orderBy:g}),k.length>0&&(0,x.jsx)(T,{title:`Low GC (cost)`,findings:k,appModel:t,page:d,setPage:f,routeTarget:w,orderBy:g})]})})}export{E as GcPressure};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as e}from"./DisclosureContext-LYzHroHO.js";import{p as t}from"./plan-graph-vendor-B0sEms9Z.js";import{S as n}from"./index-CEM9bz_x.js";import{t as r}from"./Dashboard-Bo_1jGqH.js";var i=t();function a({finding:e}){let{recommendation:t}=e;return(0,i.jsxs)(`div`,{className:`flex flex-col gap-1 transition-colors`,children:[(0,i.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`ApplicationEnd event: `,(0,i.jsx)(`strong`,{children:`missing`})]}),(0,i.jsx)(r,{finding:e}),(0,i.jsxs)(`div`,{className:`space-y-1 pt-1`,children:[(0,i.jsx)(`p`,{children:`This run’s event log never recorded an ApplicationEnd event.`}),t?(0,i.jsx)(`p`,{children:t}):null]})]})}function o({catalog:t,defaultCollapsed:r=!0}){let o=t.find(e=>e.type===`incompleteRun`);if(!o)return null;let{impactBand:s}=o;return(0,i.jsx)(n,{title:`Incomplete Run`,impactBand:s,badges:(0,i.jsx)(e,{type:`incompleteRun`,impactBand:s}),defaultCollapsed:r,children:(0,i.jsx)(a,{finding:o})})}export{o as IncompleteRun};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as e,p as t}from"./DisclosureContext-LYzHroHO.js";import{p as n}from"./plan-graph-vendor-B0sEms9Z.js";import{m as r}from"./useRecentFiles-BrBl-AP1.js";import{S as i}from"./index-CEM9bz_x.js";import{o as a,t as o}from"./Dashboard-Bo_1jGqH.js";var s=n();function c({finding:e}){let{failedJobs:n,totalJobs:r,failedTasks:i,totalTasks:a,taskFailureRate:c,value:l,recommendation:u}=e;return(0,s.jsxs)(`div`,{className:`flex flex-col gap-1 transition-colors`,children:[(0,s.jsxs)(`p`,{children:[`Failure rate: `,(0,s.jsxs)(`strong`,{children:[l,`%`]}),` (`,n,` of `,r,` completed jobs)`]}),(0,s.jsx)(t,{children:(0,s.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Task-failure context: `,i,` of `,a,` tasks failed (`,c,`%).`]})}),(0,s.jsx)(o,{finding:e}),u?(0,s.jsx)(`p`,{children:u}):null]})}function l({catalog:t,defaultCollapsed:n=!0}){let[o]=r(t,`jobFailureRate`);if(!o)return null;let{impactBand:l,value:u,failedJobs:d,totalJobs:f}=o;return(0,s.jsx)(i,{title:`Job Failures`,impactBand:l,badges:(0,s.jsx)(e,{type:`jobFailureRate`,impactBand:l}),defaultCollapsed:n,summary:(0,s.jsx)(a,{value:`${u}%`,context:`${d} of ${f} completed jobs failed`}),children:(0,s.jsx)(c,{finding:o})})}export{l as JobFailures};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{$ as n,J as r,P as i,R as a,Y as o,at as s,d as c,p as l,u}from"./DisclosureContext-LYzHroHO.js";import{p as d}from"./plan-graph-vendor-B0sEms9Z.js";import{h as f,m as p}from"./useRecentFiles-BrBl-AP1.js";import{D as m,S as h}from"./index-CEM9bz_x.js";import{o as g,r as _,t as v}from"./Dashboard-Bo_1jGqH.js";import{n as y}from"./finding-anchor-DF1cSHO1.js";import{t as b}from"./usePagedRows-BjPOpUU8.js";var x=e(t(),1),S=d();function C(e){let t=n(e),i=r(`pct`,t);return e.variant===`idleCores`?`${i} of allocated core-time idle`:e.variant===`memoryBand`?e.rule===`heapNearCapacity`?`${i} of allocated heap used: near capacity`:`${i} of allocated heap used: over-provisioned`:`~${o({value:t,unit:`mbSeconds`})} wasted`}function w(e){let t=e.recommendation??``,n=t.indexOf(`: `);return n===-1?` ${t}`:`; ${t.slice(n+2)}`}function T(e){if(e.rule==null)return null;let t=e.recommendation??``,n=t.indexOf(`: `);return n===-1?null:` ${t.slice(0,n)}.`}function E(e){return`executorId`in e&&e.executorId!=null?`Executor ${e.executorId}`:e.variant===`idleCores`?`Idle cores`:`Memory waste`}function D({finding:e}){let t=y([e]);return e.dataUnavailable?(0,S.jsx)(`div`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`space-y-1 transition-colors ${t.flashClassName}`,children:(0,S.jsx)(l,{children:(0,S.jsx)(`p`,{className:`text-muted-foreground`,children:e.recommendation})})}):(0,S.jsxs)(`div`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`transition-colors ${t.flashClassName}`,children:[(0,S.jsxs)(`p`,{className:`flex flex-wrap items-start gap-2`,children:[(0,S.jsx)(u,{impactBand:e.impactBand,className:`mt-1.5`}),(0,S.jsx)(`strong`,{children:E(e)})]}),(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[C(e),w(e),T(e)==null?null:(0,S.jsx)(l,{children:T(e)})]}),(0,S.jsx)(v,{finding:e})]})}var O=(0,x.memo)(function({catalog:e,defaultCollapsed:t=!0}){let[n,r]=(0,x.useState)(0),{findings:o,groupConfidence:u}=(0,x.useMemo)(()=>{let t=p(e,`memoryUtilization`).sort((e,t)=>a[e.impactBand]-a[t.impactBand]),n=t.filter(i);return{findings:t,groupConfidence:n.every(e=>e.confidence===n[0]?.confidence)?n[0]:void 0}},[e]),d=m(),v=d?o.findIndex(e=>e===d.finding):null,{totalPages:y,effectivePage:C,visible:w}=b(o,n,r,v);if(!o.some(i))return null;let T=o.find(e=>!e.dataUnavailable)??o[0];return(0,S.jsxs)(h,{title:`Memory Utilization`,impactBand:s(o),badges:(0,S.jsx)(c,{type:`memoryUtilization`,impactBand:s(o)??`info`}),statusBadge:(0,S.jsx)(l,{children:(0,S.jsx)(f,{confidence:u?.confidence,validationRequired:u?.validationRequired,evidenceKey:`executorMetrics`})}),defaultCollapsed:t,summary:(0,S.jsx)(g,{value:E(T),context:`${o.length} item${o.length===1?``:`s`} flagged`}),children:[(0,S.jsx)(`div`,{className:`space-y-2 text-sm`,children:w.map(e=>(0,S.jsx)(D,{finding:e},e.id))}),(0,S.jsx)(_,{page:C,totalPages:y,onPrev:()=>r(e=>e-1),onNext:()=>r(e=>e+1)})]})});export{O as MemoryUtilization};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{R as n,at as r,d as i,p as a}from"./DisclosureContext-LYzHroHO.js";import{p as o}from"./plan-graph-vendor-B0sEms9Z.js";import{h as s,m as c}from"./useRecentFiles-BrBl-AP1.js";import{D as l,S as u,x as d}from"./index-CEM9bz_x.js";import{a as f,o as p,r as m,t as h}from"./Dashboard-Bo_1jGqH.js";import{i as g,r as _}from"./impact-sort-7z0ZcBZf.js";import{n as v,t as y}from"./finding-anchor-DF1cSHO1.js";import{t as b}from"./usePagedRows-BjPOpUU8.js";import{n as x,t as S}from"./useSortMode-CU0vzThu.js";var C=e(t(),1),w=o();function T({finding:e}){let t=v([e]);return(0,w.jsxs)(`li`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`space-y-2 ${y} transition-colors ${t.flashClassName}`,children:[e.stageIds.length>0?(0,w.jsx)(f,{pills:e.stageIds.map(e=>({id:e}))}):null,(0,w.jsxs)(`p`,{children:[e.recommendation,` `,(0,w.jsx)(h,{finding:e})]})]})}var E=(0,C.memo)(function({catalog:e,defaultCollapsed:t=!0}){let{sortMode:o,setSortMode:f,orderBy:h}=S(),[v,y]=(0,C.useState)(!t),[E,D]=(0,C.useState)(0),{findings:O,pills:k}=(0,C.useMemo)(()=>{let t=c(e,`overBroadcast`).sort((e,t)=>n[e.impactBand]-n[t.impactBand]);return{findings:t,pills:[...new Set(t.flatMap(e=>e.stageIds))].map(e=>({id:e}))}},[e]),A=h(O,e=>[e],g),j=l(),M=j?A.findIndex(e=>e===j.finding):null,{totalPages:N,effectivePage:P,visible:F}=b(A,E,D,M);return O.length===0?null:(0,w.jsxs)(u,{title:`Oversized Broadcast Join`,impactBand:r(O),open:v,onOpenChange:y,badges:(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(i,{type:`overBroadcast`,impactBand:r(O)??`info`,className:d}),_(O,O.length,v)?(0,w.jsx)(x,{mode:o,onChange:f}):null]}),statusBadge:(0,w.jsx)(a,{children:(0,w.jsx)(s,{confidence:O[0].confidence,validationRequired:O[0].validationRequired,evidenceKey:`sqlPlan`})}),summary:(0,w.jsx)(p,{value:`${k.length} stage${k.length===1?``:`s`}`,context:`${O.length} finding${O.length===1?``:`s`} flagged`}),children:[(0,w.jsx)(`ul`,{className:`space-y-3 text-sm`,children:F.map(e=>(0,w.jsx)(T,{finding:e},e.id))}),(0,w.jsx)(m,{page:P,totalPages:N,onPrev:()=>D(e=>e-1),onNext:()=>D(e=>e+1)})]})});export{E as OverBroadcast};
|