git: fef6a773980f - main - systutils/aoostar-rs: AOOSTAR WTR MAX / GEM12+ PRO LCD screen control tool
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 09 Mar 2026 02:59:34 UTC
The branch main has been updated by kiwi:
URL: https://cgit.FreeBSD.org/ports/commit/?id=fef6a773980fdd4da85c453aac2af69f5acea9a8
commit fef6a773980fdd4da85c453aac2af69f5acea9a8
Author: Xavier Beaudouin <kiwi@FreeBSD.org>
AuthorDate: 2026-03-09 02:54:12 +0000
Commit: Xavier Beaudouin <kiwi@FreeBSD.org>
CommitDate: 2026-03-09 02:58:35 +0000
systutils/aoostar-rs: AOOSTAR WTR MAX / GEM12+ PRO LCD screen control tool
asterctl is an open-source tool to control the embedded LCD screen of the
AOOSTAR WTR MAX and GEM12+ PRO mini PCs.
Features:
- Switch the secondary display on or off
- Display custom images (auto-scaled to 960x376, RGB565)
- Render dynamic sensor panels compatible with AOOSTAR-X config files
- Partial screen update support for fast refresh
- USB device/serial port selection
The LCD screen communicates over USB UART (vendor ID 0x0416, product ID
0x90A1). On FreeBSD the device appears as /dev/cuaU0 (requires the umodem
kernel module).
All protocol commands have been reverse engineered from the original
AOOSTAR-X Windows software. No official documentation is available.
---
sysutils/Makefile | 1 +
sysutils/aoostar-rs/Makefile | 284 ++++++++++++++++++
sysutils/aoostar-rs/distinfo | 501 +++++++++++++++++++++++++++++++
sysutils/aoostar-rs/files/aoostar-lcd.in | 71 +++++
sysutils/aoostar-rs/pkg-descr | 16 +
5 files changed, 873 insertions(+)
diff --git a/sysutils/Makefile b/sysutils/Makefile
index cf6cf43021b3..f4822e9fa053 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -46,6 +46,7 @@
SUBDIR += ansible-sshjail
SUBDIR += ansible-sysrc
SUBDIR += anvil
+ SUBDIR += aoostar-rs
SUBDIR += apachetop
SUBDIR += apcctrl
SUBDIR += apcpwr
diff --git a/sysutils/aoostar-rs/Makefile b/sysutils/aoostar-rs/Makefile
new file mode 100644
index 000000000000..42eb9aad0d20
--- /dev/null
+++ b/sysutils/aoostar-rs/Makefile
@@ -0,0 +1,284 @@
+PORTNAME= aoostar-rs
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.2.0
+CATEGORIES= sysutils
+
+MAINTAINER= kiwi@FreeBSD.org
+COMMENT= AOOSTAR WTR MAX / GEM12+ PRO LCD screen control tool
+WWW= https://github.com/zehnm/aoostar-rs
+
+LICENSE= APACHE20 MIT
+LICENSE_COMB= dual
+LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE-APACHE
+LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT
+
+# Requires at least Rust 1.88
+USES= cargo
+USE_GITHUB= yes
+GH_ACCOUNT= zehnm
+
+USE_RC_SUBR= aoostar-lcd
+
+# Vendor all crates offline (run `make cargo-crates` to regenerate this list)
+CARGO_CRATES= ab_glyph-0.2.31 \
+ ab_glyph_rasterizer-0.1.10 \
+ adler2-2.0.1 \
+ aho-corasick-1.1.3 \
+ aligned-vec-0.6.4 \
+ anstream-0.6.20 \
+ anstyle-1.0.11 \
+ anstyle-parse-0.2.7 \
+ anstyle-query-1.1.4 \
+ anstyle-wincon-3.0.10 \
+ anyhow-1.0.99 \
+ approx-0.5.1 \
+ arbitrary-1.4.2 \
+ arg_enum_proc_macro-0.3.4 \
+ arrayvec-0.7.6 \
+ autocfg-1.5.0 \
+ av1-grain-0.2.4 \
+ avif-serialize-0.8.6 \
+ bit_field-0.10.3 \
+ bitflags-1.3.2 \
+ bitflags-2.9.3 \
+ bitstream-io-2.6.0 \
+ built-0.7.7 \
+ bumpalo-3.19.0 \
+ bytemuck-1.23.2 \
+ byteorder-lite-0.1.0 \
+ bytes-1.10.1 \
+ cc-1.2.34 \
+ cfg-expr-0.15.8 \
+ cfg-if-1.0.3 \
+ clap-4.5.46 \
+ clap_builder-4.5.46 \
+ clap_derive-4.5.45 \
+ clap_lex-0.7.5 \
+ color_quant-1.1.0 \
+ colorchoice-1.0.4 \
+ core-foundation-0.10.1 \
+ core-foundation-sys-0.8.7 \
+ crc32fast-1.5.0 \
+ crossbeam-deque-0.8.6 \
+ crossbeam-epoch-0.9.18 \
+ crossbeam-utils-0.8.21 \
+ crunchy-0.2.4 \
+ either-1.15.0 \
+ env_filter-0.1.3 \
+ env_logger-0.11.8 \
+ equator-0.4.2 \
+ equator-macro-0.4.2 \
+ equivalent-1.0.2 \
+ errno-0.3.13 \
+ exr-1.73.0 \
+ fastrand-2.3.0 \
+ fdeflate-0.3.7 \
+ flate2-1.1.2 \
+ fsevent-sys-4.1.0 \
+ futures-core-0.3.31 \
+ futures-macro-0.3.31 \
+ futures-task-0.3.31 \
+ futures-timer-3.0.3 \
+ futures-util-0.3.31 \
+ getrandom-0.2.16 \
+ getrandom-0.3.3 \
+ gif-0.13.3 \
+ glob-0.3.3 \
+ half-2.6.0 \
+ hashbrown-0.15.5 \
+ heck-0.5.0 \
+ image-0.25.6 \
+ image-webp-0.2.4 \
+ imageproc-0.25.0 \
+ imgref-1.11.0 \
+ indexmap-2.11.0 \
+ inotify-0.11.0 \
+ inotify-sys-0.1.5 \
+ interpolate_name-0.2.4 \
+ io-kit-sys-0.4.1 \
+ is_terminal_polyfill-1.70.1 \
+ itertools-0.12.1 \
+ itertools-0.14.0 \
+ itoa-1.0.15 \
+ jiff-0.2.15 \
+ jiff-static-0.2.15 \
+ jobserver-0.1.34 \
+ jpeg-decoder-0.3.2 \
+ js-sys-0.3.77 \
+ kqueue-1.1.1 \
+ kqueue-sys-1.0.4 \
+ lebe-0.5.2 \
+ libc-0.2.175 \
+ libfuzzer-sys-0.4.10 \
+ libm-0.2.15 \
+ libudev-0.3.0 \
+ libudev-sys-0.1.4 \
+ linux-raw-sys-0.9.4 \
+ log-0.4.27 \
+ loop9-0.1.5 \
+ mach2-0.4.3 \
+ matrixmultiply-0.3.10 \
+ maybe-rayon-0.1.1 \
+ memchr-2.7.5 \
+ minimal-lexical-0.2.1 \
+ miniz_oxide-0.8.9 \
+ mio-1.0.4 \
+ nalgebra-0.32.6 \
+ new_debug_unreachable-1.0.6 \
+ nix-0.26.4 \
+ nom-7.1.3 \
+ noop_proc_macro-0.3.0 \
+ notify-8.2.0 \
+ notify-types-2.0.0 \
+ ntapi-0.4.1 \
+ num-0.4.3 \
+ num-bigint-0.4.6 \
+ num-complex-0.4.6 \
+ num-derive-0.4.2 \
+ num-integer-0.1.46 \
+ num-iter-0.1.45 \
+ num-rational-0.4.2 \
+ num-traits-0.2.19 \
+ objc2-core-foundation-0.3.1 \
+ objc2-io-kit-0.3.1 \
+ once_cell-1.21.3 \
+ once_cell_polyfill-1.70.1 \
+ owned_ttf_parser-0.25.1 \
+ paste-1.0.15 \
+ pin-project-lite-0.2.16 \
+ pin-utils-0.1.0 \
+ pkg-config-0.3.32 \
+ png-0.17.16 \
+ portable-atomic-1.11.1 \
+ portable-atomic-util-0.2.4 \
+ ppv-lite86-0.2.21 \
+ proc-macro-crate-3.3.0 \
+ proc-macro2-1.0.101 \
+ profiling-1.0.17 \
+ profiling-procmacros-1.0.17 \
+ qoi-0.4.1 \
+ quick-error-2.0.1 \
+ quote-1.0.40 \
+ r-efi-5.3.0 \
+ rand-0.8.5 \
+ rand_chacha-0.3.1 \
+ rand_core-0.6.4 \
+ rand_distr-0.4.3 \
+ rav1e-0.7.1 \
+ ravif-0.11.20 \
+ rawpointer-0.2.1 \
+ rayon-1.11.0 \
+ rayon-core-1.13.0 \
+ regex-1.11.2 \
+ regex-automata-0.4.10 \
+ regex-syntax-0.8.6 \
+ relative-path-1.9.3 \
+ rgb-0.8.52 \
+ rstest-0.26.1 \
+ rstest_macros-0.26.1 \
+ rustc_version-0.4.1 \
+ rustix-1.0.8 \
+ rustversion-1.0.22 \
+ ryu-1.0.20 \
+ safe_arch-0.7.4 \
+ same-file-1.0.6 \
+ scopeguard-1.2.0 \
+ semver-1.0.26 \
+ serde-1.0.219 \
+ serde_derive-1.0.219 \
+ serde_json-1.0.143 \
+ serde_repr-0.1.20 \
+ serde_spanned-0.6.9 \
+ serialport-4.7.3 \
+ shlex-1.3.0 \
+ simba-0.8.1 \
+ simd-adler32-0.3.7 \
+ simd_helpers-0.1.0 \
+ slab-0.4.11 \
+ smallvec-1.15.1 \
+ strsim-0.11.1 \
+ syn-2.0.106 \
+ sysinfo-0.37.0 \
+ system-deps-6.2.2 \
+ target-lexicon-0.12.16 \
+ tempfile-3.21.0 \
+ thiserror-1.0.69 \
+ thiserror-2.0.16 \
+ thiserror-impl-1.0.69 \
+ thiserror-impl-2.0.16 \
+ tiff-0.9.1 \
+ toml-0.8.23 \
+ toml_datetime-0.6.11 \
+ toml_edit-0.22.27 \
+ ttf-parser-0.25.1 \
+ typenum-1.18.0 \
+ unescaper-0.1.6 \
+ unicode-ident-1.0.18 \
+ utf8parse-0.2.2 \
+ v_frame-0.3.9 \
+ version-compare-0.2.0 \
+ walkdir-2.5.0 \
+ wasi-0.11.1+wasi-snapshot-preview1 \
+ wasi-0.14.3+wasi-0.2.4 \
+ wasm-bindgen-0.2.100 \
+ wasm-bindgen-backend-0.2.100 \
+ wasm-bindgen-macro-0.2.100 \
+ wasm-bindgen-macro-support-0.2.100 \
+ wasm-bindgen-shared-0.2.100 \
+ weezl-0.1.10 \
+ wide-0.7.33 \
+ winapi-0.3.9 \
+ winapi-i686-pc-windows-gnu-0.4.0 \
+ winapi-util-0.1.10 \
+ winapi-x86_64-pc-windows-gnu-0.4.0 \
+ windows-0.61.3 \
+ windows-collections-0.2.0 \
+ windows-core-0.61.2 \
+ windows-future-0.2.1 \
+ windows-implement-0.60.0 \
+ windows-interface-0.59.1 \
+ windows-link-0.1.3 \
+ windows-numerics-0.2.0 \
+ windows-result-0.3.4 \
+ windows-strings-0.4.2 \
+ windows-sys-0.59.0 \
+ windows-sys-0.60.2 \
+ windows-targets-0.52.6 \
+ windows-targets-0.53.3 \
+ windows-threading-0.1.0 \
+ windows_aarch64_gnullvm-0.52.6 \
+ windows_aarch64_gnullvm-0.53.0 \
+ windows_aarch64_msvc-0.52.6 \
+ windows_aarch64_msvc-0.53.0 \
+ windows_i686_gnu-0.52.6 \
+ windows_i686_gnu-0.53.0 \
+ windows_i686_gnullvm-0.52.6 \
+ windows_i686_gnullvm-0.53.0 \
+ windows_i686_msvc-0.52.6 \
+ windows_i686_msvc-0.53.0 \
+ windows_x86_64_gnu-0.52.6 \
+ windows_x86_64_gnu-0.53.0 \
+ windows_x86_64_gnullvm-0.52.6 \
+ windows_x86_64_gnullvm-0.53.0 \
+ windows_x86_64_msvc-0.52.6 \
+ windows_x86_64_msvc-0.53.0 \
+ winnow-0.7.13 \
+ wit-bindgen-0.45.0 \
+ zerocopy-0.8.26 \
+ zerocopy-derive-0.8.26 \
+ zune-core-0.4.12 \
+ zune-inflate-0.2.54 \
+ zune-jpeg-0.4.20
+
+# Build both binaries
+CARGO_INSTALL_PATH= crates/asterctl \
+ crates/aster-sysinfo
+
+SUB_FILES= aoostar-lcd
+SUB_LIST= ASTERCTL=${PREFIX}/bin/asterctl \
+ DEVICE=/dev/cuaU0
+
+PLIST_FILES= bin/asterctl \
+ bin/aster-sysinfo
+
+.include <bsd.port.mk>
diff --git a/sysutils/aoostar-rs/distinfo b/sysutils/aoostar-rs/distinfo
new file mode 100644
index 000000000000..da279ef174a7
--- /dev/null
+++ b/sysutils/aoostar-rs/distinfo
@@ -0,0 +1,501 @@
+TIMESTAMP = 1772891137
+SHA256 (rust/crates/ab_glyph-0.2.31.crate) = e074464580a518d16a7126262fffaaa47af89d4099d4cb403f8ed938ba12ee7d
+SIZE (rust/crates/ab_glyph-0.2.31.crate) = 20909
+SHA256 (rust/crates/ab_glyph_rasterizer-0.1.10.crate) = 366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618
+SIZE (rust/crates/ab_glyph_rasterizer-0.1.10.crate) = 11206
+SHA256 (rust/crates/adler2-2.0.1.crate) = 320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa
+SIZE (rust/crates/adler2-2.0.1.crate) = 13366
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/aligned-vec-0.6.4.crate) = dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b
+SIZE (rust/crates/aligned-vec-0.6.4.crate) = 12609
+SHA256 (rust/crates/anstream-0.6.20.crate) = 3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192
+SIZE (rust/crates/anstream-0.6.20.crate) = 28797
+SHA256 (rust/crates/anstyle-1.0.11.crate) = 862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd
+SIZE (rust/crates/anstyle-1.0.11.crate) = 15880
+SHA256 (rust/crates/anstyle-parse-0.2.7.crate) = 4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2
+SIZE (rust/crates/anstyle-parse-0.2.7.crate) = 21707
+SHA256 (rust/crates/anstyle-query-1.1.4.crate) = 9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2
+SIZE (rust/crates/anstyle-query-1.1.4.crate) = 10192
+SHA256 (rust/crates/anstyle-wincon-3.0.10.crate) = 3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a
+SIZE (rust/crates/anstyle-wincon-3.0.10.crate) = 12558
+SHA256 (rust/crates/anyhow-1.0.99.crate) = b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100
+SIZE (rust/crates/anyhow-1.0.99.crate) = 53809
+SHA256 (rust/crates/approx-0.5.1.crate) = cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6
+SIZE (rust/crates/approx-0.5.1.crate) = 15100
+SHA256 (rust/crates/arbitrary-1.4.2.crate) = c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1
+SIZE (rust/crates/arbitrary-1.4.2.crate) = 38307
+SHA256 (rust/crates/arg_enum_proc_macro-0.3.4.crate) = 0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea
+SIZE (rust/crates/arg_enum_proc_macro-0.3.4.crate) = 5102
+SHA256 (rust/crates/arrayvec-0.7.6.crate) = 7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50
+SIZE (rust/crates/arrayvec-0.7.6.crate) = 31237
+SHA256 (rust/crates/autocfg-1.5.0.crate) = c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8
+SIZE (rust/crates/autocfg-1.5.0.crate) = 18729
+SHA256 (rust/crates/av1-grain-0.2.4.crate) = 4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8
+SIZE (rust/crates/av1-grain-0.2.4.crate) = 37050
+SHA256 (rust/crates/avif-serialize-0.8.6.crate) = 47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f
+SIZE (rust/crates/avif-serialize-0.8.6.crate) = 14185
+SHA256 (rust/crates/bit_field-0.10.3.crate) = 1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6
+SIZE (rust/crates/bit_field-0.10.3.crate) = 11173
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.9.3.crate) = 34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d
+SIZE (rust/crates/bitflags-2.9.3.crate) = 47777
+SHA256 (rust/crates/bitstream-io-2.6.0.crate) = 6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2
+SIZE (rust/crates/bitstream-io-2.6.0.crate) = 38256
+SHA256 (rust/crates/built-0.7.7.crate) = 56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b
+SIZE (rust/crates/built-0.7.7.crate) = 29776
+SHA256 (rust/crates/bumpalo-3.19.0.crate) = 46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43
+SIZE (rust/crates/bumpalo-3.19.0.crate) = 96414
+SHA256 (rust/crates/bytemuck-1.23.2.crate) = 3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677
+SIZE (rust/crates/bytemuck-1.23.2.crate) = 53021
+SHA256 (rust/crates/byteorder-lite-0.1.0.crate) = 8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495
+SIZE (rust/crates/byteorder-lite-0.1.0.crate) = 15909
+SHA256 (rust/crates/bytes-1.10.1.crate) = d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a
+SIZE (rust/crates/bytes-1.10.1.crate) = 76779
+SHA256 (rust/crates/cc-1.2.34.crate) = 42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc
+SIZE (rust/crates/cc-1.2.34.crate) = 111754
+SHA256 (rust/crates/cfg-expr-0.15.8.crate) = d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02
+SIZE (rust/crates/cfg-expr-0.15.8.crate) = 42108
+SHA256 (rust/crates/cfg-if-1.0.3.crate) = 2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9
+SIZE (rust/crates/cfg-if-1.0.3.crate) = 8719
+SHA256 (rust/crates/clap-4.5.46.crate) = 2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57
+SIZE (rust/crates/clap-4.5.46.crate) = 58332
+SHA256 (rust/crates/clap_builder-4.5.46.crate) = fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41
+SIZE (rust/crates/clap_builder-4.5.46.crate) = 169831
+SHA256 (rust/crates/clap_derive-4.5.45.crate) = 14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6
+SIZE (rust/crates/clap_derive-4.5.45.crate) = 33545
+SHA256 (rust/crates/clap_lex-0.7.5.crate) = b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675
+SIZE (rust/crates/clap_lex-0.7.5.crate) = 13469
+SHA256 (rust/crates/color_quant-1.1.0.crate) = 3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b
+SIZE (rust/crates/color_quant-1.1.0.crate) = 6649
+SHA256 (rust/crates/colorchoice-1.0.4.crate) = b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75
+SIZE (rust/crates/colorchoice-1.0.4.crate) = 8196
+SHA256 (rust/crates/core-foundation-0.10.1.crate) = b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6
+SIZE (rust/crates/core-foundation-0.10.1.crate) = 28886
+SHA256 (rust/crates/core-foundation-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b
+SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712
+SHA256 (rust/crates/crc32fast-1.5.0.crate) = 9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511
+SIZE (rust/crates/crc32fast-1.5.0.crate) = 40723
+SHA256 (rust/crates/crossbeam-deque-0.8.6.crate) = 9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51
+SIZE (rust/crates/crossbeam-deque-0.8.6.crate) = 22471
+SHA256 (rust/crates/crossbeam-epoch-0.9.18.crate) = 5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e
+SIZE (rust/crates/crossbeam-epoch-0.9.18.crate) = 46875
+SHA256 (rust/crates/crossbeam-utils-0.8.21.crate) = d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28
+SIZE (rust/crates/crossbeam-utils-0.8.21.crate) = 42691
+SHA256 (rust/crates/crunchy-0.2.4.crate) = 460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5
+SIZE (rust/crates/crunchy-0.2.4.crate) = 3887
+SHA256 (rust/crates/either-1.15.0.crate) = 48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719
+SIZE (rust/crates/either-1.15.0.crate) = 20114
+SHA256 (rust/crates/env_filter-0.1.3.crate) = 186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0
+SIZE (rust/crates/env_filter-0.1.3.crate) = 15191
+SHA256 (rust/crates/env_logger-0.11.8.crate) = 13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f
+SIZE (rust/crates/env_logger-0.11.8.crate) = 32538
+SHA256 (rust/crates/equator-0.4.2.crate) = 4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc
+SIZE (rust/crates/equator-0.4.2.crate) = 11159
+SHA256 (rust/crates/equator-macro-0.4.2.crate) = 44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3
+SIZE (rust/crates/equator-macro-0.4.2.crate) = 6407
+SHA256 (rust/crates/equivalent-1.0.2.crate) = 877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f
+SIZE (rust/crates/equivalent-1.0.2.crate) = 7419
+SHA256 (rust/crates/errno-0.3.13.crate) = 778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad
+SIZE (rust/crates/errno-0.3.13.crate) = 12449
+SHA256 (rust/crates/exr-1.73.0.crate) = f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0
+SIZE (rust/crates/exr-1.73.0.crate) = 244371
+SHA256 (rust/crates/fastrand-2.3.0.crate) = 37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be
+SIZE (rust/crates/fastrand-2.3.0.crate) = 15076
+SHA256 (rust/crates/fdeflate-0.3.7.crate) = 1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c
+SIZE (rust/crates/fdeflate-0.3.7.crate) = 27188
+SHA256 (rust/crates/flate2-1.1.2.crate) = 4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d
+SIZE (rust/crates/flate2-1.1.2.crate) = 76495
+SHA256 (rust/crates/fsevent-sys-4.1.0.crate) = 76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2
+SIZE (rust/crates/fsevent-sys-4.1.0.crate) = 4620
+SHA256 (rust/crates/futures-core-0.3.31.crate) = 05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e
+SIZE (rust/crates/futures-core-0.3.31.crate) = 14318
+SHA256 (rust/crates/futures-macro-0.3.31.crate) = 162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650
+SIZE (rust/crates/futures-macro-0.3.31.crate) = 11341
+SHA256 (rust/crates/futures-task-0.3.31.crate) = f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988
+SIZE (rust/crates/futures-task-0.3.31.crate) = 11217
+SHA256 (rust/crates/futures-timer-3.0.3.crate) = f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24
+SIZE (rust/crates/futures-timer-3.0.3.crate) = 19739
+SHA256 (rust/crates/futures-util-0.3.31.crate) = 9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81
+SIZE (rust/crates/futures-util-0.3.31.crate) = 162124
+SHA256 (rust/crates/getrandom-0.2.16.crate) = 335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592
+SIZE (rust/crates/getrandom-0.2.16.crate) = 40163
+SHA256 (rust/crates/getrandom-0.3.3.crate) = 26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4
+SIZE (rust/crates/getrandom-0.3.3.crate) = 49493
+SHA256 (rust/crates/gif-0.13.3.crate) = 4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b
+SIZE (rust/crates/gif-0.13.3.crate) = 36010
+SHA256 (rust/crates/glob-0.3.3.crate) = 0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280
+SIZE (rust/crates/glob-0.3.3.crate) = 22861
+SHA256 (rust/crates/half-2.6.0.crate) = 459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9
+SIZE (rust/crates/half-2.6.0.crate) = 59507
+SHA256 (rust/crates/hashbrown-0.15.5.crate) = 9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1
+SIZE (rust/crates/hashbrown-0.15.5.crate) = 140908
+SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
+SIZE (rust/crates/heck-0.5.0.crate) = 11517
+SHA256 (rust/crates/image-0.25.6.crate) = db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a
+SIZE (rust/crates/image-0.25.6.crate) = 242367
+SHA256 (rust/crates/image-webp-0.2.4.crate) = 525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3
+SIZE (rust/crates/image-webp-0.2.4.crate) = 68478
+SHA256 (rust/crates/imageproc-0.25.0.crate) = 2393fb7808960751a52e8a154f67e7dd3f8a2ef9bd80d1553078a7b4e8ed3f0d
+SIZE (rust/crates/imageproc-0.25.0.crate) = 132834
+SHA256 (rust/crates/imgref-1.11.0.crate) = d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408
+SIZE (rust/crates/imgref-1.11.0.crate) = 65943
+SHA256 (rust/crates/indexmap-2.11.0.crate) = f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9
+SIZE (rust/crates/indexmap-2.11.0.crate) = 99851
+SHA256 (rust/crates/inotify-0.11.0.crate) = f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3
+SIZE (rust/crates/inotify-0.11.0.crate) = 26241
+SHA256 (rust/crates/inotify-sys-0.1.5.crate) = e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb
+SIZE (rust/crates/inotify-sys-0.1.5.crate) = 6965
+SHA256 (rust/crates/interpolate_name-0.2.4.crate) = c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60
+SIZE (rust/crates/interpolate_name-0.2.4.crate) = 4027
+SHA256 (rust/crates/io-kit-sys-0.4.1.crate) = 617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b
+SIZE (rust/crates/io-kit-sys-0.4.1.crate) = 39052
+SHA256 (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf
+SIZE (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7492
+SHA256 (rust/crates/itertools-0.12.1.crate) = ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569
+SIZE (rust/crates/itertools-0.12.1.crate) = 137761
+SHA256 (rust/crates/itertools-0.14.0.crate) = 2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285
+SIZE (rust/crates/itertools-0.14.0.crate) = 152715
+SHA256 (rust/crates/itoa-1.0.15.crate) = 4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c
+SIZE (rust/crates/itoa-1.0.15.crate) = 11231
+SHA256 (rust/crates/jiff-0.2.15.crate) = be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49
+SIZE (rust/crates/jiff-0.2.15.crate) = 712996
+SHA256 (rust/crates/jiff-static-0.2.15.crate) = 03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4
+SIZE (rust/crates/jiff-static-0.2.15.crate) = 76146
+SHA256 (rust/crates/jobserver-0.1.34.crate) = 9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33
+SIZE (rust/crates/jobserver-0.1.34.crate) = 29013
+SHA256 (rust/crates/jpeg-decoder-0.3.2.crate) = 00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07
+SIZE (rust/crates/jpeg-decoder-0.3.2.crate) = 745371
+SHA256 (rust/crates/js-sys-0.3.77.crate) = 1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f
+SIZE (rust/crates/js-sys-0.3.77.crate) = 55538
+SHA256 (rust/crates/kqueue-1.1.1.crate) = eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a
+SIZE (rust/crates/kqueue-1.1.1.crate) = 21504
+SHA256 (rust/crates/kqueue-sys-1.0.4.crate) = ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b
+SIZE (rust/crates/kqueue-sys-1.0.4.crate) = 7160
+SHA256 (rust/crates/lebe-0.5.2.crate) = 03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8
+SIZE (rust/crates/lebe-0.5.2.crate) = 8422
+SHA256 (rust/crates/libc-0.2.175.crate) = 6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543
+SIZE (rust/crates/libc-0.2.175.crate) = 788728
+SHA256 (rust/crates/libfuzzer-sys-0.4.10.crate) = 5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404
+SIZE (rust/crates/libfuzzer-sys-0.4.10.crate) = 133968
+SHA256 (rust/crates/libm-0.2.15.crate) = f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de
+SIZE (rust/crates/libm-0.2.15.crate) = 156108
+SHA256 (rust/crates/libudev-0.3.0.crate) = 78b324152da65df7bb95acfcaab55e3097ceaab02fb19b228a9eb74d55f135e0
+SIZE (rust/crates/libudev-0.3.0.crate) = 11348
+SHA256 (rust/crates/libudev-sys-0.1.4.crate) = 3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324
+SIZE (rust/crates/libudev-sys-0.1.4.crate) = 6177
+SHA256 (rust/crates/linux-raw-sys-0.9.4.crate) = cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12
+SIZE (rust/crates/linux-raw-sys-0.9.4.crate) = 2311088
+SHA256 (rust/crates/log-0.4.27.crate) = 13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94
+SIZE (rust/crates/log-0.4.27.crate) = 48120
+SHA256 (rust/crates/loop9-0.1.5.crate) = 0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062
+SIZE (rust/crates/loop9-0.1.5.crate) = 3406
+SHA256 (rust/crates/mach2-0.4.3.crate) = d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44
+SIZE (rust/crates/mach2-0.4.3.crate) = 22180
+SHA256 (rust/crates/matrixmultiply-0.3.10.crate) = a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08
+SIZE (rust/crates/matrixmultiply-0.3.10.crate) = 58170
+SHA256 (rust/crates/maybe-rayon-0.1.1.crate) = 8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519
+SIZE (rust/crates/maybe-rayon-0.1.1.crate) = 2901
+SHA256 (rust/crates/memchr-2.7.5.crate) = 32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0
+SIZE (rust/crates/memchr-2.7.5.crate) = 97603
+SHA256 (rust/crates/minimal-lexical-0.2.1.crate) = 68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a
+SIZE (rust/crates/minimal-lexical-0.2.1.crate) = 94841
+SHA256 (rust/crates/miniz_oxide-0.8.9.crate) = 1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316
+SIZE (rust/crates/miniz_oxide-0.8.9.crate) = 67132
+SHA256 (rust/crates/mio-1.0.4.crate) = 78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c
+SIZE (rust/crates/mio-1.0.4.crate) = 104212
+SHA256 (rust/crates/nalgebra-0.32.6.crate) = 7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4
+SIZE (rust/crates/nalgebra-0.32.6.crate) = 375297
+SHA256 (rust/crates/new_debug_unreachable-1.0.6.crate) = 650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086
+SIZE (rust/crates/new_debug_unreachable-1.0.6.crate) = 2582
+SHA256 (rust/crates/nix-0.26.4.crate) = 598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b
+SIZE (rust/crates/nix-0.26.4.crate) = 279099
+SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a
+SIZE (rust/crates/nom-7.1.3.crate) = 117570
+SHA256 (rust/crates/noop_proc_macro-0.3.0.crate) = 0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8
+SIZE (rust/crates/noop_proc_macro-0.3.0.crate) = 2157
+SHA256 (rust/crates/notify-8.2.0.crate) = 4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3
+SIZE (rust/crates/notify-8.2.0.crate) = 39067
+SHA256 (rust/crates/notify-types-2.0.0.crate) = 5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d
+SIZE (rust/crates/notify-types-2.0.0.crate) = 14495
+SHA256 (rust/crates/ntapi-0.4.1.crate) = e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4
+SIZE (rust/crates/ntapi-0.4.1.crate) = 126552
+SHA256 (rust/crates/num-0.4.3.crate) = 35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23
+SIZE (rust/crates/num-0.4.3.crate) = 9575
+SHA256 (rust/crates/num-bigint-0.4.6.crate) = a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9
+SIZE (rust/crates/num-bigint-0.4.6.crate) = 102801
+SHA256 (rust/crates/num-complex-0.4.6.crate) = 73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495
+SIZE (rust/crates/num-complex-0.4.6.crate) = 30352
+SHA256 (rust/crates/num-derive-0.4.2.crate) = ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202
+SIZE (rust/crates/num-derive-0.4.2.crate) = 14709
+SHA256 (rust/crates/num-integer-0.1.46.crate) = 7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f
+SIZE (rust/crates/num-integer-0.1.46.crate) = 22331
+SHA256 (rust/crates/num-iter-0.1.45.crate) = 1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf
+SIZE (rust/crates/num-iter-0.1.45.crate) = 10320
+SHA256 (rust/crates/num-rational-0.4.2.crate) = f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824
+SIZE (rust/crates/num-rational-0.4.2.crate) = 28159
+SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
+SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
+SHA256 (rust/crates/objc2-core-foundation-0.3.1.crate) = 1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166
+SIZE (rust/crates/objc2-core-foundation-0.3.1.crate) = 178121
+SHA256 (rust/crates/objc2-io-kit-0.3.1.crate) = 71c1c64d6120e51cd86033f67176b1cb66780c2efe34dec55176f77befd93c0a
+SIZE (rust/crates/objc2-io-kit-0.3.1.crate) = 220419
+SHA256 (rust/crates/once_cell-1.21.3.crate) = 42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d
+SIZE (rust/crates/once_cell-1.21.3.crate) = 34534
+SHA256 (rust/crates/once_cell_polyfill-1.70.1.crate) = a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad
+SIZE (rust/crates/once_cell_polyfill-1.70.1.crate) = 7510
+SHA256 (rust/crates/owned_ttf_parser-0.25.1.crate) = 36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b
+SIZE (rust/crates/owned_ttf_parser-0.25.1.crate) = 8989
+SHA256 (rust/crates/paste-1.0.15.crate) = 57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a
+SIZE (rust/crates/paste-1.0.15.crate) = 18374
+SHA256 (rust/crates/pin-project-lite-0.2.16.crate) = 3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b
+SIZE (rust/crates/pin-project-lite-0.2.16.crate) = 30504
+SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (rust/crates/pkg-config-0.3.32.crate) = 7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c
+SIZE (rust/crates/pkg-config-0.3.32.crate) = 21370
+SHA256 (rust/crates/png-0.17.16.crate) = 82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526
+SIZE (rust/crates/png-0.17.16.crate) = 117975
+SHA256 (rust/crates/portable-atomic-1.11.1.crate) = f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483
+SIZE (rust/crates/portable-atomic-1.11.1.crate) = 185506
+SHA256 (rust/crates/portable-atomic-util-0.2.4.crate) = d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507
+SIZE (rust/crates/portable-atomic-util-0.2.4.crate) = 47043
+SHA256 (rust/crates/ppv-lite86-0.2.21.crate) = 85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9
+SIZE (rust/crates/ppv-lite86-0.2.21.crate) = 22522
+SHA256 (rust/crates/proc-macro-crate-3.3.0.crate) = edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35
+SIZE (rust/crates/proc-macro-crate-3.3.0.crate) = 12432
+SHA256 (rust/crates/proc-macro2-1.0.101.crate) = 89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de
+SIZE (rust/crates/proc-macro2-1.0.101.crate) = 53886
+SHA256 (rust/crates/profiling-1.0.17.crate) = 3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773
+SIZE (rust/crates/profiling-1.0.17.crate) = 13493
+SHA256 (rust/crates/profiling-procmacros-1.0.17.crate) = 52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b
+SIZE (rust/crates/profiling-procmacros-1.0.17.crate) = 5895
+SHA256 (rust/crates/qoi-0.4.1.crate) = 7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001
+SIZE (rust/crates/qoi-0.4.1.crate) = 71135
+SHA256 (rust/crates/quick-error-2.0.1.crate) = a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3
+SIZE (rust/crates/quick-error-2.0.1.crate) = 14265
+SHA256 (rust/crates/quote-1.0.40.crate) = 1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d
+SIZE (rust/crates/quote-1.0.40.crate) = 31063
+SHA256 (rust/crates/r-efi-5.3.0.crate) = 69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f
+SIZE (rust/crates/r-efi-5.3.0.crate) = 64532
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c
+SIZE (rust/crates/rand_core-0.6.4.crate) = 22666
+SHA256 (rust/crates/rand_distr-0.4.3.crate) = 32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31
+SIZE (rust/crates/rand_distr-0.4.3.crate) = 58255
+SHA256 (rust/crates/rav1e-0.7.1.crate) = cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9
+SIZE (rust/crates/rav1e-0.7.1.crate) = 1472522
+SHA256 (rust/crates/ravif-0.11.20.crate) = 5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b
+SIZE (rust/crates/ravif-0.11.20.crate) = 19233
+SHA256 (rust/crates/rawpointer-0.2.1.crate) = 60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3
+SIZE (rust/crates/rawpointer-0.2.1.crate) = 7490
+SHA256 (rust/crates/rayon-1.11.0.crate) = 368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f
+SIZE (rust/crates/rayon-1.11.0.crate) = 182470
+SHA256 (rust/crates/rayon-core-1.13.0.crate) = 22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91
+SIZE (rust/crates/rayon-core-1.13.0.crate) = 73151
+SHA256 (rust/crates/regex-1.11.2.crate) = 23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912
+SIZE (rust/crates/regex-1.11.2.crate) = 166265
+SHA256 (rust/crates/regex-automata-0.4.10.crate) = 6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6
+SIZE (rust/crates/regex-automata-0.4.10.crate) = 622754
+SHA256 (rust/crates/regex-syntax-0.8.6.crate) = caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001
+SIZE (rust/crates/regex-syntax-0.8.6.crate) = 358808
+SHA256 (rust/crates/relative-path-1.9.3.crate) = ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2
+SIZE (rust/crates/relative-path-1.9.3.crate) = 22400
+SHA256 (rust/crates/rgb-0.8.52.crate) = 0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce
+SIZE (rust/crates/rgb-0.8.52.crate) = 22449
+SHA256 (rust/crates/rstest-0.26.1.crate) = f5a3193c063baaa2a95a33f03035c8a72b83d97a54916055ba22d35ed3839d49
+SIZE (rust/crates/rstest-0.26.1.crate) = 56940
+SHA256 (rust/crates/rstest_macros-0.26.1.crate) = 9c845311f0ff7951c5506121a9ad75aec44d083c31583b2ea5a30bcb0b0abba0
+SIZE (rust/crates/rstest_macros-0.26.1.crate) = 68256
+SHA256 (rust/crates/rustc_version-0.4.1.crate) = cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92
+SIZE (rust/crates/rustc_version-0.4.1.crate) = 12245
+SHA256 (rust/crates/rustix-1.0.8.crate) = 11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8
+SIZE (rust/crates/rustix-1.0.8.crate) = 416688
+SHA256 (rust/crates/rustversion-1.0.22.crate) = b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d
+SIZE (rust/crates/rustversion-1.0.22.crate) = 21096
+SHA256 (rust/crates/ryu-1.0.20.crate) = 28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f
+SIZE (rust/crates/ryu-1.0.20.crate) = 48738
+SHA256 (rust/crates/safe_arch-0.7.4.crate) = 96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323
+SIZE (rust/crates/safe_arch-0.7.4.crate) = 74564
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/semver-1.0.26.crate) = 56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0
+SIZE (rust/crates/semver-1.0.26.crate) = 31303
+SHA256 (rust/crates/serde-1.0.219.crate) = 5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6
+SIZE (rust/crates/serde-1.0.219.crate) = 78983
+SHA256 (rust/crates/serde_derive-1.0.219.crate) = 5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00
+SIZE (rust/crates/serde_derive-1.0.219.crate) = 57798
+SHA256 (rust/crates/serde_json-1.0.143.crate) = d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a
+SIZE (rust/crates/serde_json-1.0.143.crate) = 155342
+SHA256 (rust/crates/serde_repr-0.1.20.crate) = 175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c
+SIZE (rust/crates/serde_repr-0.1.20.crate) = 12627
+SHA256 (rust/crates/serde_spanned-0.6.9.crate) = bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3
+SIZE (rust/crates/serde_spanned-0.6.9.crate) = 10210
+SHA256 (rust/crates/serialport-4.7.3.crate) = 2acaf3f973e8616d7ceac415f53fc60e190b2a686fbcf8d27d0256c741c5007b
+SIZE (rust/crates/serialport-4.7.3.crate) = 75444
+SHA256 (rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64
+SIZE (rust/crates/shlex-1.3.0.crate) = 18713
+SHA256 (rust/crates/simba-0.8.1.crate) = 061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae
+SIZE (rust/crates/simba-0.8.1.crate) = 52545
+SHA256 (rust/crates/simd-adler32-0.3.7.crate) = d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe
+SIZE (rust/crates/simd-adler32-0.3.7.crate) = 12086
+SHA256 (rust/crates/simd_helpers-0.1.0.crate) = 95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6
+SIZE (rust/crates/simd_helpers-0.1.0.crate) = 1527
+SHA256 (rust/crates/slab-0.4.11.crate) = 7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589
+SIZE (rust/crates/slab-0.4.11.crate) = 18549
+SHA256 (rust/crates/smallvec-1.15.1.crate) = 67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03
+SIZE (rust/crates/smallvec-1.15.1.crate) = 38116
+SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f
+SIZE (rust/crates/strsim-0.11.1.crate) = 14266
+SHA256 (rust/crates/syn-2.0.106.crate) = ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6
+SIZE (rust/crates/syn-2.0.106.crate) = 301514
+SHA256 (rust/crates/sysinfo-0.37.0.crate) = 07cec4dc2d2e357ca1e610cfb07de2fa7a10fc3e9fe89f72545f3d244ea87753
+SIZE (rust/crates/sysinfo-0.37.0.crate) = 215610
+SHA256 (rust/crates/system-deps-6.2.2.crate) = a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349
+SIZE (rust/crates/system-deps-6.2.2.crate) = 25546
+SHA256 (rust/crates/target-lexicon-0.12.16.crate) = 61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1
+SIZE (rust/crates/target-lexicon-0.12.16.crate) = 26488
+SHA256 (rust/crates/tempfile-3.21.0.crate) = 15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e
+SIZE (rust/crates/tempfile-3.21.0.crate) = 42581
+SHA256 (rust/crates/thiserror-1.0.69.crate) = b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52
+SIZE (rust/crates/thiserror-1.0.69.crate) = 22198
+SHA256 (rust/crates/thiserror-2.0.16.crate) = 3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0
+SIZE (rust/crates/thiserror-2.0.16.crate) = 29095
+SHA256 (rust/crates/thiserror-impl-1.0.69.crate) = 4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1
+SIZE (rust/crates/thiserror-impl-1.0.69.crate) = 18365
+SHA256 (rust/crates/thiserror-impl-2.0.16.crate) = 6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960
+SIZE (rust/crates/thiserror-impl-2.0.16.crate) = 21214
+SHA256 (rust/crates/tiff-0.9.1.crate) = ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e
+SIZE (rust/crates/tiff-0.9.1.crate) = 1423953
+SHA256 (rust/crates/toml-0.8.23.crate) = dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362
+SIZE (rust/crates/toml-0.8.23.crate) = 36050
+SHA256 (rust/crates/toml_datetime-0.6.11.crate) = 22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c
+SIZE (rust/crates/toml_datetime-0.6.11.crate) = 16125
+SHA256 (rust/crates/toml_edit-0.22.27.crate) = 41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a
+SIZE (rust/crates/toml_edit-0.22.27.crate) = 78602
+SHA256 (rust/crates/ttf-parser-0.25.1.crate) = d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31
+SIZE (rust/crates/ttf-parser-0.25.1.crate) = 201121
+SHA256 (rust/crates/typenum-1.18.0.crate) = 1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f
+SIZE (rust/crates/typenum-1.18.0.crate) = 74871
+SHA256 (rust/crates/unescaper-0.1.6.crate) = c01d12e3a56a4432a8b436f293c25f4808bdf9e9f9f98f9260bba1f1bc5a1f26
+SIZE (rust/crates/unescaper-0.1.6.crate) = 18588
+SHA256 (rust/crates/unicode-ident-1.0.18.crate) = 5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512
+SIZE (rust/crates/unicode-ident-1.0.18.crate) = 47743
+SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821
+SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499
+SHA256 (rust/crates/v_frame-0.3.9.crate) = 666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2
+SIZE (rust/crates/v_frame-0.3.9.crate) = 20856
+SHA256 (rust/crates/version-compare-0.2.0.crate) = 852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b
+SIZE (rust/crates/version-compare-0.2.0.crate) = 13942
+SHA256 (rust/crates/walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b
+SIZE (rust/crates/walkdir-2.5.0.crate) = 23951
+SHA256 (rust/crates/wasi-0.11.1+wasi-snapshot-preview1.crate) = ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b
+SIZE (rust/crates/wasi-0.11.1+wasi-snapshot-preview1.crate) = 28477
+SHA256 (rust/crates/wasi-0.14.3+wasi-0.2.4.crate) = 6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95
+SIZE (rust/crates/wasi-0.14.3+wasi-0.2.4.crate) = 144010
+SHA256 (rust/crates/wasm-bindgen-0.2.100.crate) = 1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5
+SIZE (rust/crates/wasm-bindgen-0.2.100.crate) = 48288
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.100.crate) = 2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6
+SIZE (rust/crates/wasm-bindgen-backend-0.2.100.crate) = 32111
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.100.crate) = 7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407
+SIZE (rust/crates/wasm-bindgen-macro-0.2.100.crate) = 9663
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.100.crate) = 8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.100.crate) = 26243
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.100.crate) = 1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d
+SIZE (rust/crates/wasm-bindgen-shared-0.2.100.crate) = 8570
+SHA256 (rust/crates/weezl-0.1.10.crate) = a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3
+SIZE (rust/crates/weezl-0.1.10.crate) = 46418
+SHA256 (rust/crates/wide-0.7.33.crate) = 0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03
+SIZE (rust/crates/wide-0.7.33.crate) = 99792
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.10.crate) = 0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22
+SIZE (rust/crates/winapi-util-0.1.10.crate) = 13370
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-0.61.3.crate) = 9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893
+SIZE (rust/crates/windows-0.61.3.crate) = 9372520
+SHA256 (rust/crates/windows-collections-0.2.0.crate) = 3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8
+SIZE (rust/crates/windows-collections-0.2.0.crate) = 13579
+SHA256 (rust/crates/windows-core-0.61.2.crate) = c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3
+SIZE (rust/crates/windows-core-0.61.2.crate) = 36771
+SHA256 (rust/crates/windows-future-0.2.1.crate) = fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e
+SIZE (rust/crates/windows-future-0.2.1.crate) = 17532
+SHA256 (rust/crates/windows-implement-0.60.0.crate) = a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836
+SIZE (rust/crates/windows-implement-0.60.0.crate) = 15073
+SHA256 (rust/crates/windows-interface-0.59.1.crate) = bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8
+SIZE (rust/crates/windows-interface-0.59.1.crate) = 11735
+SHA256 (rust/crates/windows-link-0.1.3.crate) = 5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a
+SIZE (rust/crates/windows-link-0.1.3.crate) = 6154
+SHA256 (rust/crates/windows-numerics-0.2.0.crate) = 9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1
+SIZE (rust/crates/windows-numerics-0.2.0.crate) = 9686
+SHA256 (rust/crates/windows-result-0.3.4.crate) = 56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6
+SIZE (rust/crates/windows-result-0.3.4.crate) = 13418
+SHA256 (rust/crates/windows-strings-0.4.2.crate) = 56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57
+SIZE (rust/crates/windows-strings-0.4.2.crate) = 13983
+SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b
+SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323
+SHA256 (rust/crates/windows-sys-0.60.2.crate) = f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb
+SIZE (rust/crates/windows-sys-0.60.2.crate) = 2518479
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+SHA256 (rust/crates/windows-targets-0.53.3.crate) = d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91
+SIZE (rust/crates/windows-targets-0.53.3.crate) = 7099
+SHA256 (rust/crates/windows-threading-0.1.0.crate) = b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6
+SIZE (rust/crates/windows-threading-0.1.0.crate) = 9085
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.53.0.crate) = 86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764
+SIZE (rust/crates/windows_aarch64_gnullvm-0.53.0.crate) = 782443
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+SHA256 (rust/crates/windows_aarch64_msvc-0.53.0.crate) = c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c
+SIZE (rust/crates/windows_aarch64_msvc-0.53.0.crate) = 834446
+SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
+SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
+SHA256 (rust/crates/windows_i686_gnu-0.53.0.crate) = c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3
+SIZE (rust/crates/windows_i686_gnu-0.53.0.crate) = 936973
+SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+SHA256 (rust/crates/windows_i686_gnullvm-0.53.0.crate) = 9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11
+SIZE (rust/crates/windows_i686_gnullvm-0.53.0.crate) = 854056
+SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
+SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
+SHA256 (rust/crates/windows_i686_msvc-0.53.0.crate) = 581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d
+SIZE (rust/crates/windows_i686_msvc-0.53.0.crate) = 903450
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
+SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
+SHA256 (rust/crates/windows_x86_64_gnu-0.53.0.crate) = 2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba
+SIZE (rust/crates/windows_x86_64_gnu-0.53.0.crate) = 902585
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.53.0.crate) = 0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57
+SIZE (rust/crates/windows_x86_64_gnullvm-0.53.0.crate) = 782434
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
+SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
+SHA256 (rust/crates/windows_x86_64_msvc-0.53.0.crate) = 271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486
+SIZE (rust/crates/windows_x86_64_msvc-0.53.0.crate) = 834400
+SHA256 (rust/crates/winnow-0.7.13.crate) = 21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf
+SIZE (rust/crates/winnow-0.7.13.crate) = 174454
+SHA256 (rust/crates/wit-bindgen-0.45.0.crate) = 052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814
+SIZE (rust/crates/wit-bindgen-0.45.0.crate) = 60405
+SHA256 (rust/crates/zerocopy-0.8.26.crate) = 1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f
+SIZE (rust/crates/zerocopy-0.8.26.crate) = 249223
+SHA256 (rust/crates/zerocopy-derive-0.8.26.crate) = 9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181
+SIZE (rust/crates/zerocopy-derive-0.8.26.crate) = 88080
+SHA256 (rust/crates/zune-core-0.4.12.crate) = 3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a
+SIZE (rust/crates/zune-core-0.4.12.crate) = 17355
+SHA256 (rust/crates/zune-inflate-0.2.54.crate) = 73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02
+SIZE (rust/crates/zune-inflate-0.2.54.crate) = 37973
+SHA256 (rust/crates/zune-jpeg-0.4.20.crate) = fc1f7e205ce79eb2da3cd71c5f55f3589785cb7c79f6a03d1c8d1491bda5d089
+SIZE (rust/crates/zune-jpeg-0.4.20.crate) = 67723
+SHA256 (zehnm-aoostar-rs-v0.2.0_GH0.tar.gz) = 4355425879a47dbdf20538f1d6fd8058ce77e1723034879ca70f8008fc45ac36
+SIZE (zehnm-aoostar-rs-v0.2.0_GH0.tar.gz) = 7546745
diff --git a/sysutils/aoostar-rs/files/aoostar-lcd.in b/sysutils/aoostar-rs/files/aoostar-lcd.in
new file mode 100644
index 000000000000..c73699a566db
--- /dev/null
+++ b/sysutils/aoostar-rs/files/aoostar-lcd.in
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+# PROVIDE: aoostar_lcd
+# REQUIRE: DAEMON usb
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf to enable at boot:
+#
+# aoostar_lcd_enable="YES" # Enable service (default: NO)
+# aoostar_lcd_device="/dev/cuaU0" # Override serial device (optional)
+# aoostar_lcd_action="off" # Action at start: "off" or "on" (default: off)
+#
+
+. /etc/rc.subr
+
+name="aoostar_lcd"
+rcvar="aoostar_lcd_enable"
+desc="AOOSTAR WTR MAX / GEM12+ PRO LCD screen control"
+
+: ${aoostar_lcd_enable:="NO"}
+: ${aoostar_lcd_device:="%%DEVICE%%"}
+: ${aoostar_lcd_action:="off"}
+
+asterctl_cmd="%%ASTERCTL%%"
+command="/usr/bin/true"
+
+start_cmd="aoostar_lcd_start"
+stop_cmd="aoostar_lcd_stop"
+status_cmd="aoostar_lcd_status"
+
+aoostar_lcd_start()
+{
+ if [ ! -c "${aoostar_lcd_device}" ]; then
+ warn "aoostar_lcd: device ${aoostar_lcd_device} not found."
+ warn "Try: kldload umodem"
+ return 1
+ fi
+
+ case "${aoostar_lcd_action}" in
+ off)
+ info "aoostar_lcd: switching LCD off on ${aoostar_lcd_device}"
+ ${asterctl_cmd} -d "${aoostar_lcd_device}" --off
+ ;;
+ on)
+ info "aoostar_lcd: switching LCD on on ${aoostar_lcd_device}"
+ ${asterctl_cmd} -d "${aoostar_lcd_device}" --on
+ ;;
+ *)
+ warn "aoostar_lcd: unknown action '${aoostar_lcd_action}' (use 'on' or 'off')"
+ return 1
+ ;;
+ esac
+}
+
+aoostar_lcd_stop()
+{
+ # Nothing to stop — this is a one-shot action service
+ :
+}
+
+aoostar_lcd_status()
+{
+ if [ -c "${aoostar_lcd_device}" ]; then
+ echo "aoostar_lcd: device ${aoostar_lcd_device} is present"
+ else
+ echo "aoostar_lcd: device ${aoostar_lcd_device} NOT found"
+ fi
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/sysutils/aoostar-rs/pkg-descr b/sysutils/aoostar-rs/pkg-descr
new file mode 100644
index 000000000000..7aace79d466a
--- /dev/null
+++ b/sysutils/aoostar-rs/pkg-descr
@@ -0,0 +1,16 @@
+asterctl is an open-source tool to control the embedded LCD screen of the
+AOOSTAR WTR MAX and GEM12+ PRO mini PCs.
+
+Features:
+- Switch the secondary display on or off
+- Display custom images (auto-scaled to 960x376, RGB565)
+- Render dynamic sensor panels compatible with AOOSTAR-X config files
+- Partial screen update support for fast refresh
+- USB device/serial port selection
+
+The LCD screen communicates over USB UART (vendor ID 0x0416, product ID
+0x90A1). On FreeBSD the device appears as /dev/cuaU0 (requires the umodem
+kernel module).
+
+All protocol commands have been reverse engineered from the original
+AOOSTAR-X Windows software. No official documentation is available.