Commit 1e0cced
feat(highcharts): migrate Highcharts from Python to JavaScript (Phase 2) (#8516)
Closes #8242.
Migrates the canonical `highcharts` entry from the `highcharts-core`
**Python** wrapper to the native **JavaScript** `highcharts.js`, per the
"most-used variant" rule in
[`docs/concepts/library-expansion.md`](docs/concepts/library-expansion.md)
§6 (npm ~1 M/wk vs `highcharts-core` ~5 k/wk — ~200×). Highcharts now
renders through the Phase‑1 (#8244) Node 22 + Playwright browser
harness, exactly like Chart.js / D3 / ECharts.
## Approach decision: clean break (not the dual-serve window)
The issue's "careful bit" offered two paths: a one-release **deprecation
window** (keep Python pages, 301-redirect) or the **clean-break
fallback**. Per the owner's call in the task thread (*"highcharts auch
komplett löschen und einfach mit den js sachen nach und nach neu
erstellen"*), this ships the **clean break** — the documented fallback:
- The **322** Python `highcharts.py` impls + **322** metadata files are
removed.
- JS implementations are recreated **gradually** via `bulk-generate` /
`daily-regen`.
- Old `/{spec}/python/highcharts` deep links **gracefully fall back to
the spec hub** via existing `SpecPage` logic (no matching impl →
redirect to `/{spec}?language=python`). No redirect scaffolding needed.
This keeps the change small and avoids the dual-language complexity (no
`impl.language_id` refactor, no nginx/301 work) the deprecation window
would have required.
## What changed
**Registry & runtime**
- `core/constants.py`: `highcharts` `language_id` `python → javascript`,
`version` `1.10.0 → 12.6.0`, JS-native description (commercial license
kept prominent). `framework` was already `none`.
- **alembic migration** `a1c7e2f9b8d3`: `UPDATE` the existing
`libraries` row (the seed upserts `ON CONFLICT DO NOTHING`, so flipping
an existing row needs an explicit data migration; safe no-op on a fresh
DB). Single head verified.
- `package.json` / `package-lock.json`: pin `highcharts@12.6.0`;
`render.mjs`: add `highcharts` to the harness `BUNDLES` (`Highcharts`
global, `highcharts/highcharts.js` UMD).
**Prompt & style guide**
- `prompts/library/highcharts.md`: full rewrite Python → JavaScript —
mount-node contract, `ANYPLOT_TOKENS` theme mapping,
`deviceScaleFactor=2` canvas rule + orientation directive, `//` header,
**prominent commercial-license note**, and forbidden patterns (no
`highcharts-core`, no CDN/`fetch`, no add-on modules, no inline
HTML/screenshot).
- `prompts/default-style-guide.md`: drop the now-wrong highcharts
native-pixel (dpr=1) sizing — JS Highcharts sizes in CSS px within the
1600×900 mount.
**Workflows** — add `highcharts` to the `javascript` case arm in
`impl-generate`/`impl-repair`/`impl-review`/`impl-merge`; remove the
Selenium "Setup Chrome for Highcharts" steps and the `highcharts-core`
Python version-detection special-cases; JS canvas-gate repair hint.
**Frontend & docs** — `LIB_TO_LANG['highcharts'] = 'javascript'`;
refresh stale library-count meta descriptions (`LibrariesPage`,
`PlotsPage`, `seo.py` — they listed highcharts as Python / undercounted
libraries); mark Phase 2 **shipped** in `library-expansion.md`.
## Validation
- **End-to-end render via the real harness** (Playwright + Chromium):
light & dark **landscape 3200×1800** and **square 2400×2400**, exact
pixels from the PNG IHDR; first series in brand green `#009E73`,
theme-adaptive chrome.
- `npm ci --dry-run` clean (lockfile in sync); `node
automation/js-render/render.mjs` renders highcharts in both
themes/orientations.
- **1493 Python unit tests pass**; `ruff check .` + `ruff format
--check` clean; all edited workflow YAML parses; alembic resolves to a
single head (`a1c7e2f9b8d3`).
- `tests/unit/core/test_constants.py` now asserts `highcharts` is
`language_id=="javascript"` / `framework=="none"`; `test_prompts.py`
treats highcharts as a JS prompt (excluded from the Python-structure
checks, like chartjs/d3/echarts).
## Notes / follow-ups
- `pyproject.toml` still lists `highcharts-core` (in `plotting` + the
`lib-highcharts` extra). Left untouched to avoid churning `uv.lock`; it
is now unused (no Python highcharts impls) and can be pruned in a small
follow-up.
- Library **count unchanged at 14** — a move, not an addition.
https://claude.ai/code/session_01Gz8rneNnCYjDT2aR8L2wne
---
_Generated by [Claude
Code](https://claude.ai/code/session_01Gz8rneNnCYjDT2aR8L2wne)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 724af4f commit 1e0cced
662 files changed
Lines changed: 335 additions & 164630 deletions
File tree
- .github/workflows
- alembic/versions
- api/routers
- app/src
- constants
- pages
- automation/js-render
- core
- docs/concepts
- plots
- acf-pacf
- implementations/python
- metadata/python
- alluvial-basic
- implementations/python
- metadata/python
- alluvial-opinion-flow
- implementations/python
- metadata/python
- andrews-curves
- implementations/python
- metadata/python
- arc-basic
- implementations/python
- metadata/python
- area-basic
- implementations/python
- metadata/python
- area-cumulative-flow
- implementations/python
- metadata/python
- area-elevation-profile
- implementations/python
- metadata/python
- area-stacked-confidence
- implementations/python
- metadata/python
- area-stacked-percent
- implementations/python
- metadata/python
- area-stacked
- implementations/python
- metadata/python
- band-basic
- implementations/python
- metadata/python
- bar-3d-categorical
- implementations/python
- metadata/python
- bar-basic
- implementations/python
- metadata/python
- bar-diverging-likert
- implementations/python
- metadata/python
- bar-diverging
- implementations/python
- metadata/python
- bar-drilldown
- implementations/python
- metadata/python
- bar-error
- implementations/python
- metadata/python
- bar-feature-importance
- implementations/python
- metadata/python
- bar-grouped
- implementations/python
- metadata/python
- bar-horizontal
- implementations/python
- metadata/python
- bar-pareto
- implementations/python
- metadata/python
- bar-permutation-importance
- implementations/python
- metadata/python
- bar-race-animated
- implementations/python
- metadata/python
- bar-spine
- implementations/python
- metadata/python
- bar-stacked-labeled
- implementations/python
- metadata/python
- bar-stacked-percent
- implementations/python
- metadata/python
- bar-stacked
- implementations/python
- metadata/python
- bar-tornado-sensitivity
- implementations/python
- metadata/python
- barcode-code128
- implementations/python
- metadata/python
- barcode-ean13
- implementations/python
- metadata/python
- bifurcation-basic
- implementations/python
- metadata/python
- biplot-pca
- implementations/python
- metadata/python
- bland-altman-basic
- implementations/python
- metadata/python
- bode-basic
- implementations/python
- metadata/python
- box-basic
- implementations/python
- metadata/python
- box-grouped
- implementations/python
- metadata/python
- box-horizontal
- implementations/python
- metadata/python
- box-notched
- implementations/python
- metadata/python
- boxen-basic
- implementations/python
- metadata/python
- bubble-basic
- implementations/python
- metadata/python
- bubble-map-geographic
- implementations/python
- metadata/python
- bubble-packed
- implementations/python
- metadata/python
- bullet-basic
- implementations/python
- metadata/python
- bump-basic
- implementations/python
- metadata/python
- calibration-beer-lambert
- implementations/python
- metadata/python
- calibration-curve
- implementations/python
- metadata/python
- campbell-basic
- implementations/python
- metadata/python
- candlestick-basic
- implementations/python
- metadata/python
- candlestick-volume
- implementations/python
- metadata/python
- cartogram-area-distortion
- implementations/python
- metadata/python
- cat-box-strip
- implementations/python
- metadata/python
- chernoff-basic
- implementations/python
- metadata/python
- chessboard-basic
- implementations/python
- metadata/python
- chessboard-pieces
- implementations/python
- metadata/python
- chord-basic
- implementations/python
- metadata/python
- choropleth-basic
- implementations/python
- metadata/python
- circlepacking-basic
- implementations/python
- metadata/python
- circos-basic
- implementations/python
- metadata/python
- coefficient-confidence
- implementations/python
- metadata/python
- column-stratigraphic
- implementations/python
- metadata/python
- confusion-matrix
- implementations/python
- metadata/python
- contour-3d
- implementations/python
- metadata/python
- contour-basic
- implementations/python
- metadata/python
- contour-decision-boundary
- implementations/python
- metadata/python
- contour-density
- implementations/python
- metadata/python
- contour-filled
- implementations/python
- metadata/python
- contour-map-geographic
- implementations/python
- metadata/python
- count-basic
- implementations/python
- metadata/python
- crossword-basic
- implementations/python
- metadata/python
- curve-bias-variance-tradeoff
- implementations/python
- metadata/python
- curve-dose-response
- implementations/python
- metadata/python
- dashboard-metrics-tiles
- implementations/python
- metadata/python
- dashboard-synchronized-crosshair
- implementations/python
- metadata/python
- datamatrix-basic
- implementations/python
- metadata/python
- dendrogram-basic
- implementations/python
- metadata/python
- dendrogram-radial
- implementations/python
- metadata/python
- density-basic
- implementations/python
- metadata/python
- density-rug
- implementations/python
- metadata/python
- diagnostic-regression-panel
- implementations/python
- metadata/python
- donut-basic
- implementations/python
- metadata/python
- donut-nested
- implementations/python
- metadata/python
- dot-matrix-proportional
- implementations/python
- metadata/python
- drawdown-basic
- implementations/python
- metadata/python
- dumbbell-basic
- implementations/python
- metadata/python
- ecdf-basic
- implementations/python
- metadata/python
- ecg-twelve-lead
- implementations/python
- metadata/python
- elbow-curve
- implementations/python
- metadata/python
- energy-level-atomic
- implementations/python
- metadata/python
- errorbar-asymmetric
- implementations/python
- metadata/python
- errorbar-basic
- implementations/python
- metadata/python
- eye-diagram-basic
- implementations/python
- metadata/python
- facet-grid
- implementations/python
- metadata/python
- feynman-basic
- implementations/python
- metadata/python
- flamegraph-basic
- implementations/python
- metadata/python
- flowmap-origin-destination
- implementations/python
- metadata/python
- forest-basic
- implementations/python
- metadata/python
- frequency-polygon-basic
- implementations/python
- metadata/python
- frontier-efficient
- implementations/python
- metadata/python
- funnel-basic
- implementations/python
- metadata/python
- funnel-meta-analysis
- implementations/python
- metadata/python
- gain-curve
- implementations/python
- metadata/python
- gantt-basic
- implementations/python
- metadata/python
- gantt-dependencies
- implementations/python
- metadata/python
- gauge-basic
- implementations/python
- metadata/python
- genome-track-multi
- implementations/python
- metadata/python
- heatmap-adjacency
- implementations/python
- metadata/python
- heatmap-annotated
- implementations/python
- metadata/python
- heatmap-basic
- implementations/python
- metadata/python
- heatmap-calendar
- implementations/python
- metadata/python
- heatmap-chromagram
- implementations/python
- metadata/python
- heatmap-clustered
- implementations/python
- metadata/python
- heatmap-cohort-retention
- implementations/python
- metadata/python
- heatmap-correlation
- implementations/python
- metadata/python
- heatmap-geographic
- implementations/python
- metadata/python
- heatmap-loss-triangle
- implementations/python
- metadata/python
- heatmap-mandelbrot
- implementations/python
- metadata/python
- heatmap-polar
- implementations/python
- metadata/python
- heatmap-rainflow
- implementations/python
- metadata/python
- heatmap-risk-matrix
- implementations/python
- metadata/python
- heatmap-stripes-climate
- implementations/python
- metadata/python
- hexbin-basic
- implementations/python
- metadata/python
- hexbin-map-geographic
- implementations/python
- metadata/python
- hierarchy-toggle-view
- implementations/python
- metadata/python
- histogram-2d
- implementations/python
- metadata/python
- histogram-basic
- implementations/python
- metadata/python
- histogram-capability
- implementations/python
- metadata/python
- histogram-cumulative
- implementations/python
- metadata/python
- histogram-density
- implementations/python
- metadata/python
- histogram-epidemic
- implementations/python
- metadata/python
- histogram-kde
- implementations/python
- metadata/python
- histogram-overlapping
- implementations/python
- metadata/python
- histogram-returns-distribution
- implementations/python
- metadata/python
- histogram-stacked
- implementations/python
- metadata/python
- histogram-stepwise
- implementations/python
- metadata/python
- hive-basic
- implementations/python
- metadata/python
- horizon-basic
- implementations/python
- metadata/python
- ice-basic
- implementations/python
- metadata/python
- icicle-basic
- implementations/python
- metadata/python
- indicator-bollinger
- implementations/python
- metadata/python
- indicator-ema
- implementations/python
- metadata/python
- indicator-ichimoku
- implementations/python
- metadata/python
- indicator-macd
- implementations/python
- metadata/python
- indicator-rsi
- implementations/python
- metadata/python
- indicator-sma
- implementations/python
- metadata/python
- kagi-basic
- implementations/python
- metadata/python
- ks-test-comparison
- implementations/python
- metadata/python
- learning-curve-basic
- implementations/python
- metadata/python
- lift-curve
- implementations/python
- metadata/python
- lightcurve-transit
- implementations/python
- metadata/python
- line-3d-trajectory
- implementations/python
- metadata/python
- line-annotated-events
- implementations/python
- metadata/python
- line-arrhenius
- implementations/python
- metadata/python
- line-basic
- implementations/python
- metadata/python
- line-confidence
- implementations/python
- metadata/python
- line-filled
- implementations/python
- metadata/python
- line-growth-percentile
- implementations/python
- metadata/python
- line-impurity-comparison
- implementations/python
- metadata/python
- line-load-duration
- implementations/python
- metadata/python
- line-loss-training
- implementations/python
- metadata/python
- line-markers
- implementations/python
- metadata/python
- line-multi
- implementations/python
- metadata/python
- line-parametric
- implementations/python
- metadata/python
- line-pca-variance-cumulative
- implementations/python
- metadata/python
- line-reaction-coordinate
- implementations/python
- metadata/python
- line-retention-cohort
- implementations/python
- metadata/python
- line-stepwise
- implementations/python
- metadata/python
- line-stock-comparison
- implementations/python
- metadata/python
- line-stress-strain
- implementations/python
- metadata/python
- line-styled
- implementations/python
- metadata/python
- line-timeseries-rolling
- implementations/python
- metadata/python
- line-timeseries
- implementations/python
- metadata/python
- line-win-probability
- implementations/python
- metadata/python
- line-yield-curve
- implementations/python
- metadata/python
- linked-views-selection
- implementations/python
- metadata/python
- logistic-regression
- implementations/python
- metadata/python
- lollipop-basic
- implementations/python
- metadata/python
- lollipop-grouped
- implementations/python
- metadata/python
- manhattan-gwas
- implementations/python
- metadata/python
- map-animated-temporal
- implementations/python
- metadata/python
- map-connection-lines
- implementations/python
- metadata/python
- map-drilldown-geographic
- implementations/python
- metadata/python
- map-marker-clustered
- implementations/python
- metadata/python
- map-projections
- implementations/python
- metadata/python
- map-route-path
- implementations/python
- metadata/python
- map-tile-background
- implementations/python
- metadata/python
- map-tilegrid
- implementations/python
- metadata/python
- marimekko-basic
- implementations/python
- metadata/python
- maze-circular
- implementations/python
- metadata/python
- maze-printable
- implementations/python
- metadata/python
- mohr-circle
- implementations/python
- metadata/python
- mosaic-categorical
- implementations/python
- metadata/python
- network-basic
- implementations/python
- metadata/python
- network-bipartite
- implementations/python
- metadata/python
- network-directed
- implementations/python
- metadata/python
- network-force-directed
- implementations/python
- metadata/python
- network-hierarchical
- implementations/python
- metadata/python
- network-transport-static
- implementations/python
- metadata/python
- network-weighted
- implementations/python
- metadata/python
- nyquist-basic
- implementations/python
- metadata/python
- ohlc-bar
- implementations/python
- metadata/python
- parallel-basic
- implementations/python
- metadata/python
- parallel-categories-basic
- implementations/python
- metadata/python
- parliament-basic
- implementations/python
- metadata/python
- pdp-basic
- implementations/python
- metadata/python
- phase-diagram-pt
- implementations/python
- metadata/python
- phase-diagram
- implementations/python
- metadata/python
- piano-roll-midi
- implementations/python
- metadata/python
- pictogram-basic
- implementations/python
- metadata/python
- pie-basic
- implementations/python
- metadata/python
- pie-drilldown
- implementations/python
- metadata/python
- pie-portfolio-interactive
- implementations/python
- metadata/python
- point-and-figure-basic
- implementations/python
- metadata/python
- point-basic
- implementations/python
- metadata/python
- polar-bar
- implementations/python
- metadata/python
- polar-basic
- implementations/python
- metadata/python
- polar-line
- implementations/python
- metadata/python
- polar-scatter
- implementations/python
- metadata/python
- pp-basic
- implementations/python
- metadata/python
- precision-recall
- implementations/python
- metadata/python
- probability-weibull
- implementations/python
- metadata/python
- pyramid-basic
- implementations/python
- metadata/python
- qq-basic
- implementations/python
- metadata/python
- qrcode-basic
- implementations/python
- metadata/python
- quiver-basic
- implementations/python
- metadata/python
- radar-basic
- implementations/python
- metadata/python
- radar-innovation-timeline
- implementations/python
- metadata/python
- radar-multi
- implementations/python
- metadata/python
- raincloud-basic
- implementations/python
- metadata/python
- range-interval
- implementations/python
- metadata/python
- recurrence-basic
- implementations/python
- metadata/python
- renko-basic
- implementations/python
- metadata/python
- residual-plot
- implementations/python
- metadata/python
- ridgeline-basic
- implementations/python
- metadata/python
- roc-curve
- implementations/python
- metadata/python
- rose-basic
- implementations/python
- metadata/python
- rug-basic
- implementations/python
- metadata/python
- sankey-basic
- implementations/python
- metadata/python
- scatter-3d
- implementations/python
- metadata/python
- scatter-animated-controls
- implementations/python
- metadata/python
- scatter-annotated
- implementations/python
- metadata/python
- scatter-ashby-material
- implementations/python
- metadata/python
- scatter-basic
- implementations/python
- metadata/python
- scatter-brush-zoom
- implementations/python
- metadata/python
- scatter-categorical
- implementations/python
- metadata/python
- scatter-color-mapped
- implementations/python
- metadata/python
- scatter-complex-plane
- implementations/python
- metadata/python
- scatter-connected-temporal
- implementations/python
- metadata/python
- scatter-constellation-diagram
- implementations/python
- metadata/python
- scatter-embedding
- implementations/python
- metadata/python
- scatter-hr-diagram
- implementations/python
- metadata/python
- scatter-lag
- implementations/python
- metadata/python
- scatter-map-geographic
- implementations/python
- metadata/python
- scatter-marginal
- implementations/python
- metadata/python
- scatter-matrix-interactive
- implementations/python
- metadata/python
- scatter-matrix
- implementations/python
- metadata/python
- scatter-pitch-events
- implementations/python
- metadata/python
- scatter-regression-linear
- implementations/python
- metadata/python
- scatter-regression-lowess
- implementations/python
- metadata/python
- scatter-regression-polynomial
- implementations/python
- metadata/python
- scatter-shot-chart
- implementations/python
- metadata/python
- scatter-text
- implementations/python
- metadata/python
- sequence-logo-basic
- implementations/python
- metadata/python
- shap-summary
- implementations/python
- metadata/python
- shap-waterfall
- implementations/python
- metadata/python
- silhouette-basic
- implementations/python
- metadata/python
- skewt-logp-atmospheric
- implementations/python
- metadata/python
- slope-basic
- implementations/python
- metadata/python
- smith-chart-basic
- implementations/python
- metadata/python
- sn-curve-basic
- implementations/python
- metadata/python
- span-basic
- implementations/python
- metadata/python
- sparkline-basic
- implementations/python
- metadata/python
- spc-xbar-r
- implementations/python
- metadata/python
- spectrogram-basic
- implementations/python
- metadata/python
- spectrogram-mel
- implementations/python
- metadata/python
- spectrum-basic
- implementations/python
- metadata/python
- spectrum-nmr
- implementations/python
- metadata/python
- spiral-timeseries
- implementations/python
- metadata/python
- spirometry-flow-volume
- implementations/python
- metadata/python
- star-chart-constellation
- implementations/python
- metadata/python
- stem-basic
- implementations/python
- metadata/python
- step-basic
- implementations/python
- metadata/python
- stereonet-equal-area
- implementations/python
- metadata/python
- stock-event-flags
- implementations/python
- metadata/python
- streamgraph-basic
- implementations/python
- metadata/python
- streamline-basic
- implementations/python
- metadata/python
- strip-basic
- implementations/python
- metadata/python
- subplot-grid
- implementations/python
- metadata/python
- subplot-mosaic
- implementations/python
- metadata/python
- sudoku-basic
- implementations/python
- metadata/python
- sunburst-basic
- implementations/python
- metadata/python
- surface-basic
- implementations/python
- metadata/python
- survival-kaplan-meier
- implementations/python
- metadata/python
- swarm-basic
- implementations/python
- metadata/python
- swimmer-clinical-timeline
- implementations/python
- metadata/python
- ternary-basic
- implementations/python
- metadata/python
- ternary-density
- implementations/python
- metadata/python
- timeline-basic
- implementations/python
- metadata/python
- timeseries-decomposition
- implementations/python
- metadata/python
- timeseries-forecast-uncertainty
- implementations/python
- metadata/python
- titration-curve
- implementations/python
- metadata/python
- tree-decision
- implementations/python
- metadata/python
- tree-phylogenetic
- implementations/python
- metadata/python
- treemap-basic
- implementations/python
- metadata/python
- upset-basic
- implementations/python
- metadata/python
- venn-basic
- implementations/python
- metadata/python
- venn-labeled-items
- implementations/python
- metadata/python
- violin-basic
- implementations/python
- metadata/python
- violin-box
- implementations/python
- metadata/python
- violin-grouped-swarm
- implementations/python
- metadata/python
- violin-split
- implementations/python
- metadata/python
- violin-swarm
- implementations/python
- metadata/python
- volcano-basic
- implementations/python
- metadata/python
- voronoi-basic
- implementations/python
- metadata/python
- waffle-basic
- implementations/python
- metadata/python
- waterfall-basic
- implementations/python
- metadata/python
- waveform-audio
- implementations/python
- metadata/python
- windbarb-basic
- implementations/python
- metadata/python
- windrose-basic
- implementations/python
- metadata/python
- wireframe-3d-basic
- implementations/python
- metadata/python
- wordcloud-basic
- implementations/python
- metadata/python
- prompts
- library
- tests/unit
- core
- prompts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
130 | | - | |
| 130 | + | |
131 | 131 | | |
132 | 132 | | |
133 | 133 | | |
| |||
248 | 248 | | |
249 | 249 | | |
250 | 250 | | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | 251 | | |
258 | 252 | | |
259 | 253 | | |
| |||
622 | 616 | | |
623 | 617 | | |
624 | 618 | | |
625 | | - | |
626 | | - | |
627 | | - | |
628 | 619 | | |
629 | 620 | | |
630 | 621 | | |
| |||
637 | 628 | | |
638 | 629 | | |
639 | 630 | | |
640 | | - | |
641 | 631 | | |
642 | 632 | | |
643 | 633 | | |
| |||
656 | 646 | | |
657 | 647 | | |
658 | 648 | | |
659 | | - | |
| 649 | + | |
660 | 650 | | |
661 | 651 | | |
662 | 652 | | |
| |||
945 | 935 | | |
946 | 936 | | |
947 | 937 | | |
948 | | - | |
| 938 | + | |
949 | 939 | | |
950 | 940 | | |
951 | 941 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
116 | | - | |
| 116 | + | |
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
82 | | - | |
| 82 | + | |
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| |||
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | 120 | | |
127 | 121 | | |
128 | 122 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
112 | | - | |
| 112 | + | |
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| |||
266 | 266 | | |
267 | 267 | | |
268 | 268 | | |
269 | | - | |
| 269 | + | |
270 | 270 | | |
271 | 271 | | |
272 | 272 | | |
| |||
Lines changed: 60 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
178 | | - | |
| 178 | + | |
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
176 | | - | |
| 176 | + | |
177 | 177 | | |
178 | 178 | | |
179 | 179 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
104 | 109 | | |
105 | 110 | | |
106 | 111 | | |
| |||
0 commit comments