aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Knoblich <kai@FreeBSD.org>2021-08-02 06:10:10 +0000
committerKai Knoblich <kai@FreeBSD.org>2021-08-02 06:16:01 +0000
commit7cb5fb35608f4cc8a97afd2bdb83fa7f797fcadc (patch)
tree40d488cdaacc509c662b286ce26913159c8ea9f8
parentd0d7bd815ebf7019ee4b96ae3e943be81e88ab93 (diff)
downloadports-7cb5fb35608f4cc8a97afd2bdb83fa7f797fcadc.tar.gz
ports-7cb5fb35608f4cc8a97afd2bdb83fa7f797fcadc.zip
games/anki: Update to 2.1.44
Since the 2.1.36 release the build system has changed significantly again and devel/bazel is now used by upstream for the entire build process. With this change, a lot of bazel rules and also some translation files needs to be downloaded from various repositories during the buildtime. In order to still make Anki compatible with the Ports framework, the following approach is used: 1. Prefetch all the required files before buildtime. 2. Create and setup a few local bazel repositories along with a set of custom bazel rules and to provide Node, Protobuf and Yarn from the Ports tree. 3. Compile the Rust library and place the output files to the respective local bazel repository for further processing. 4. Build the rest via devel/bazel From a technical point of view, Anki should also be able to be built on other 64-bit architectures (but requires further patching of a few bazel rules), as soon as devel/bazel can also be built for those platforms. The option NLS is gone because the translations are now compiled directly into the Rust library and they only generate a small overhead. Changelog since 2.1.35 (too many changes/fixes to list them separately): https://changes.ankiweb.net/ Reviewed by: tcberner MFH: 2021Q3 Differential Revision: https://reviews.freebsd.org/D31358
-rw-r--r--games/anki/Makefile652
-rw-r--r--games/anki/distinfo1164
-rw-r--r--games/anki/files/bazel/BUILD.bazel-i18n10
-rw-r--r--games/anki/files/bazel/BUILD.bazel-local_node1
-rw-r--r--games/anki/files/bazel/BUILD.bazel-protoc_bin_freebsd1
-rw-r--r--games/anki/files/bazel/BUILD.bazel-pylib-rsbridge12
-rw-r--r--games/anki/files/bazel/BUILD.bazel-pyqt527
-rw-r--r--games/anki/files/bazel/BUILD.bazel-rslib25
-rw-r--r--games/anki/files/bazel/BUILD.bazel-rust_output-fluent_proto7
-rw-r--r--games/anki/files/bazel/BUILD.bazel-rust_output-librsbridge7
-rw-r--r--games/anki/files/bazel/pyqt5.bzl13
-rw-r--r--games/anki/files/bazel/repos.bzl109
-rw-r--r--games/anki/files/patch-Makefile27
-rw-r--r--games/anki/files/patch-defs.bzl61
-rw-r--r--games/anki/files/patch-ftl_BUILD.bazel16
-rw-r--r--games/anki/files/patch-late__deps.bzl14
-rw-r--r--games/anki/files/patch-local__repos_rules__nodejs_internal_common_os__name.bzl29
-rw-r--r--games/anki/files/patch-local__repos_rules__nodejs_internal_node_node__patches.js13
-rw-r--r--games/anki/files/patch-local__repos_rules__nodejs_internal_npm__install_npm__install.bzl14
-rw-r--r--games/anki/files/patch-local__repos_rules__nodejs_toolchains_node_BUILD.bazel55
-rw-r--r--games/anki/files/patch-platforms_BUILD.bazel17
-rw-r--r--games/anki/files/patch-protobuf.bzl27
-rw-r--r--games/anki/files/patch-pylib_Makefile39
-rw-r--r--games/anki/files/patch-pylib_anki_BUILD.bazel34
-rw-r--r--games/anki/files/patch-pylib_anki___backend_BUILD.bazel21
-rw-r--r--games/anki/files/patch-pylib_orjson.bzl15
-rw-r--r--games/anki/files/patch-pylib_tools_BUILD.bazel28
-rw-r--r--games/anki/files/patch-qt_BUILD.bazel70
-rw-r--r--games/anki/files/patch-qt_Makefile45
-rw-r--r--games/anki/files/patch-qt_aqt_BUILD.bazel35
-rw-r--r--games/anki/files/patch-qt_runanki10
-rw-r--r--games/anki/files/patch-rslib_Cargo.toml29
-rw-r--r--games/anki/files/patch-rspy_Makefile27
-rw-r--r--games/anki/files/patch-scripts_BUILD.bazel10
-rw-r--r--games/anki/files/patch-scripts_status.sh9
-rw-r--r--games/anki/pkg-plist551
36 files changed, 1867 insertions, 1357 deletions
diff --git a/games/anki/Makefile b/games/anki/Makefile
index d6568ad2c589..fbf47144582d 100644
--- a/games/anki/Makefile
+++ b/games/anki/Makefile
@@ -1,12 +1,11 @@
# Created by: Andrew Pantyukhin <infofarmer@FreeBSD.org>
PORTNAME= anki
-DISTVERSION= 2.1.35
-PORTREVISION= 11
-# Don't forget to update ${_MY_BUILDHASH}
+DISTVERSION= 2.1.44
+# Don't forget to update ${_MY_BUILDHASH} if DISTVERSION changes
CATEGORIES= games education python
-MASTER_SITES= LOCAL/kai/:npmcache
-DISTFILES= anki-npm-cache-${DISTVERSION}${EXTRACT_SUFX}:npmcache
+MASTER_SITES= LOCAL/kai/:yarncache
+DISTFILES= anki-yarn-cache-${DISTVERSION}${EXTRACT_SUFX}:yarncache
DIST_SUBDIR= python
MAINTAINER= kai@FreeBSD.org
@@ -18,14 +17,17 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
DEPRECATED= Uses EOL Python 2.7 via www/py-qt5-webengine
EXPIRATION_DATE=2021-06-23
+NOT_FOR_ARCHS= armv6 armv7 i386 mips powerpc
+NOT_FOR_ARCHS_REASON= the bazel build framework supports only 64-bit systems.
+
BUILD_DEPENDS= bash:shells/bash \
- maturin:devel/py-maturin@${PY_FLAVOR} \
+ bazel:devel/bazel \
protoc:devel/protobuf \
- npm:www/npm \
- rsync:net/rsync \
+ yarn:www/yarn \
${PYTHON_PKGNAMEPREFIX}mypy-protobuf>=1.21:devel/py-mypy-protobuf@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}stringcase==1.2.0:devel/py-stringcase@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}stringcase>0:devel/py-stringcase@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}black>0:devel/py-black@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}fluent>0:devel/py-fluent@${PY_FLAVOR} \
${RUN_DEPENDS}
# For x64 architectures there's also a Python package "orjson" that still needs
@@ -51,295 +53,352 @@ RUN_DEPENDS= lame:audio/lame \
${PYTHON_PKGNAMEPREFIX}waitress>0:www/py-waitress@${PY_FLAVOR}
# USES=ssl is required for the compilation of the Rust code
-USES= cargo desktop-file-utils gmake perl5 pyqt:5 python:3.7+ shebangfix ssl
+USES= cargo desktop-file-utils pyqt:5 python:3.8+ shebangfix ssl
USE_GITHUB= yes
GH_ACCOUNT= ankitects
-GH_TUPLE= ankitects:anki-core-i18n:fbda2ed:i18ncore \
- ankitects:anki-desktop-ftl:f56e959:i18nfluent \
- ankitects:anki-desktop-i18n:a93ccef:i18ndesktop \
- ankitects:rust-coarsetime:f9e2c86216f0f4803bc75404828318fc206dab29:coarsetime \
- ankitects:fluent-rs:f61c5e10a53161ef5261f3c87b62047f12e4aa74:fluent \
- ankitects:hyper-timeout:664b6f9c387f6a7d75d1609a65c02554e8c55bc7:hypertimeout \
- ankitects:reqwest:57665e2c2a39db85723ba860f1b570a608bb73f9:reqwest \
- ankitects:tokio-io-timeout:96e1358555c49905de89170f2b1102a7d8b6c4c2:tokioiotimeout
-USE_PERL5= build
+# Translation files
+GH_TUPLE= ankitects:anki-core-i18n:30ab198:ftlrslib \
+ ankitects:anki-desktop-ftl:3920d26:ftlextra
+# Cargo crates
+GH_TUPLE+= ankitects:hyper-timeout:anki-2020-11-03:hypertimeout \
+ ankitects:reqwest:anki-2020-11-03:reqwest \
+ ankitects:tokio-io-timeout:anki-2020-11-03:tokioiotimeout
+# Bazel Skylib framework and sets of bazel rules
+GH_TUPLE+= bazelbuild:bazel-skylib:e59b620:bzlskylib \
+ bazelbuild:rules_cc:40548a2:bzlrcc \
+ bazelbuild:rules_java:c13e3ea:bzlrjava \
+ bazelbuild:rules_nodejs:1689fa1:bzlrnodejs \
+ bazelbuild:rules_proto:f7a30f6:bzlrproto \
+ ankitects:rules_pip:73953e0:bzlrpip \
+ ankitects:rules_python:3927c9b:bzlrpython \
+ ankitects:rules_rust:dfd1200:bzlrrust \
+ ankitects:rules_sass:275ace7:bzlrsass \
+ ankitects:rules_svelte:f09155c:bzlrsvelte
+
USE_PYQT= core gui network printsupport sip svg webchannel webengine widgets xml_build
-SHEBANG_FILES= qt/po/scripts/build-mo-files \
- qt/po/scripts/copy-qt-files \
- qt/runanki \
- qt/tools/build_ui.sh \
- scripts/rename
+SHEBANG_FILES= qt/tools/runanki.system.in
-CARGO_CRATES= addr2line-0.13.0 \
- adler-0.2.3 \
- aho-corasick-0.7.14 \
- anyhow-1.0.33 \
- arc-swap-0.4.7 \
+CARGO_CRATES= addr2line-0.15.2 \
+ adler-1.0.2 \
+ ahash-0.4.7 \
+ aho-corasick-0.7.18 \
+ ammonia-3.1.2 \
+ anyhow-1.0.42 \
+ arc-swap-1.3.0 \
arrayref-0.3.6 \
arrayvec-0.4.12 \
- arrayvec-0.5.1 \
- askama-0.10.3 \
- askama_derive-0.10.3 \
+ arrayvec-0.5.2 \
+ askama-0.10.5 \
+ askama_derive-0.10.5 \
askama_escape-0.10.1 \
- askama_shared-0.10.4 \
- async-compression-0.3.5 \
+ askama_shared-0.11.1 \
+ async-compression-0.3.8 \
+ async-trait-0.1.50 \
atty-0.2.14 \
autocfg-1.0.1 \
- backtrace-0.3.53 \
+ backtrace-0.3.60 \
base64-0.12.3 \
+ base64-0.13.0 \
bitflags-1.2.1 \
- blake2b_simd-0.5.10 \
- blake3-0.3.7 \
- bumpalo-3.4.0 \
- byteorder-1.3.4 \
+ bitvec-0.19.5 \
+ blake3-0.3.8 \
+ bumpalo-3.7.0 \
+ byteorder-1.4.3 \
bytes-0.4.12 \
bytes-0.5.6 \
- cc-1.0.61 \
+ bytes-1.0.1 \
+ cc-1.0.69 \
cfg-if-0.1.10 \
cfg-if-1.0.0 \
chrono-0.4.19 \
- cloudabi-0.1.0 \
+ coarsetime-0.1.19 \
constant_time_eq-0.1.5 \
- core-foundation-0.7.0 \
- core-foundation-sys-0.7.0 \
+ core-foundation-0.9.1 \
+ core-foundation-sys-0.8.2 \
crc32fast-1.2.1 \
- crossbeam-channel-0.4.4 \
- crossbeam-utils-0.7.2 \
+ crossbeam-channel-0.5.1 \
+ crossbeam-utils-0.8.5 \
crypto-mac-0.8.0 \
- ctor-0.1.16 \
- derivative-2.1.1 \
+ ctor-0.1.20 \
+ derivative-2.2.0 \
digest-0.9.0 \
- dirs-2.0.2 \
- dirs-sys-0.3.5 \
- dtoa-0.4.6 \
+ dirs-next-2.0.0 \
+ dirs-sys-next-0.1.2 \
+ dtoa-0.4.8 \
either-1.6.1 \
- encoding_rs-0.8.24 \
+ encoding_rs-0.8.28 \
+ env_logger-0.8.4 \
failure-0.1.8 \
failure_derive-0.1.8 \
fallible-iterator-0.2.0 \
fallible-streaming-iterator-0.1.9 \
fixedbitset-0.2.0 \
- flate2-1.0.18 \
- fluent-langneg-0.12.1 \
- fluent-syntax-0.9.3 \
+ flate2-1.0.20 \
+ fluent-0.13.1 \
+ fluent-bundle-0.13.2 \
+ fluent-langneg-0.13.0 \
+ fluent-syntax-0.10.3 \
fnv-1.0.7 \
foreign-types-0.3.2 \
foreign-types-shared-0.1.1 \
+ form_urlencoded-1.0.1 \
fuchsia-zircon-0.3.3 \
fuchsia-zircon-sys-0.3.3 \
- futures-0.3.6 \
- futures-channel-0.3.6 \
- futures-core-0.3.6 \
- futures-executor-0.3.6 \
- futures-io-0.3.6 \
- futures-macro-0.3.6 \
- futures-sink-0.3.6 \
- futures-task-0.3.6 \
- futures-util-0.3.6 \
- fxhash-0.2.1 \
+ funty-1.1.0 \
+ futf-0.1.4 \
+ futures-0.3.15 \
+ futures-channel-0.3.15 \
+ futures-core-0.3.15 \
+ futures-executor-0.3.15 \
+ futures-io-0.3.15 \
+ futures-macro-0.3.15 \
+ futures-sink-0.3.15 \
+ futures-task-0.3.15 \
+ futures-util-0.3.15 \
generic-array-0.14.4 \
- getrandom-0.1.15 \
+ getopts-0.2.21 \
+ getrandom-0.1.16 \
+ getrandom-0.2.3 \
ghost-0.1.2 \
- gimli-0.22.0 \
- h2-0.2.6 \
+ gimli-0.24.0 \
+ h2-0.2.7 \
hashbrown-0.9.1 \
- heck-0.3.1 \
- hermit-abi-0.1.17 \
- hex-0.4.2 \
+ hashbrown-0.11.2 \
+ hashlink-0.6.0 \
+ heck-0.3.3 \
+ hermit-abi-0.1.19 \
+ hex-0.4.3 \
+ html5ever-0.25.1 \
htmlescape-0.3.1 \
- http-0.2.1 \
+ http-0.2.4 \
http-body-0.3.1 \
- httparse-1.3.4 \
+ httparse-1.4.1 \
httpdate-0.3.2 \
- humansize-1.1.0 \
- hyper-0.13.8 \
+ humansize-1.1.1 \
+ humantime-2.1.0 \
+ hyper-0.13.10 \
+ hyper-rustls-0.21.0 \
hyper-tls-0.4.3 \
- idna-0.2.0 \
- indexmap-1.6.0 \
+ idna-0.2.3 \
+ indexmap-1.7.0 \
indoc-0.3.6 \
indoc-impl-0.3.6 \
- instant-0.1.7 \
- intl_pluralrules-6.0.0 \
- inventory-0.1.9 \
- inventory-impl-0.1.9 \
+ instant-0.1.10 \
+ intl-memoizer-0.5.1 \
+ intl_pluralrules-7.0.1 \
+ inventory-0.1.10 \
+ inventory-impl-0.1.10 \
iovec-0.1.4 \
- itertools-0.8.2 \
+ ipnet-2.3.1 \
itertools-0.9.0 \
- itoa-0.4.6 \
- js-sys-0.3.45 \
+ itoa-0.4.7 \
+ js-sys-0.3.51 \
kernel32-sys-0.2.2 \
lazy_static-1.4.0 \
lexical-core-0.7.6 \
- libc-0.2.79 \
- libsqlite3-sys-0.18.0 \
- linked-hash-map-0.5.3 \
- lock_api-0.4.1 \
- log-0.4.11 \
- lru-cache-0.1.2 \
+ libc-0.2.98 \
+ libsqlite3-sys-0.20.1 \
+ lock_api-0.4.4 \
+ log-0.4.14 \
+ mac-0.1.1 \
+ maplit-1.0.2 \
+ markup5ever-0.10.1 \
+ markup5ever_rcdom-0.1.0 \
matches-0.1.8 \
- maybe-uninit-2.0.0 \
- memchr-2.3.3 \
+ memchr-2.4.0 \
mime-0.3.16 \
mime_guess-2.0.3 \
- miniz_oxide-0.4.3 \
- mio-0.6.22 \
- miow-0.2.1 \
- multimap-0.8.2 \
- native-tls-0.2.4 \
- net2-0.2.35 \
+ miniz_oxide-0.4.4 \
+ mio-0.6.23 \
+ miow-0.2.2 \
+ multimap-0.8.3 \
+ native-tls-0.2.7 \
+ net2-0.2.37 \
+ new_debug_unreachable-1.0.4 \
nodrop-0.1.14 \
- nom-5.1.2 \
+ nom-6.1.2 \
num-format-0.4.0 \
- num-integer-0.1.43 \
- num-traits-0.2.12 \
+ num-integer-0.1.44 \
+ num-traits-0.2.14 \
num_cpus-1.13.0 \
- num_enum-0.5.1 \
- num_enum_derive-0.5.1 \
- object-0.21.1 \
- once_cell-1.4.1 \
- openssl-0.10.30 \
- openssl-probe-0.1.2 \
- openssl-sys-0.9.58 \
- parking_lot-0.11.0 \
- parking_lot_core-0.8.0 \
+ num_enum-0.5.2 \
+ num_enum_derive-0.5.2 \
+ object-0.25.3 \
+ once_cell-1.8.0 \
+ openssl-0.10.35 \
+ openssl-probe-0.1.4 \
+ openssl-sys-0.9.65 \
+ parking_lot-0.11.1 \
+ parking_lot_core-0.8.3 \
paste-0.1.18 \
paste-impl-0.1.18 \
percent-encoding-2.1.0 \
petgraph-0.5.1 \
- pin-project-0.4.27 \
- pin-project-internal-0.4.27 \
- pin-project-lite-0.1.11 \
+ phf-0.8.0 \
+ phf_codegen-0.8.0 \
+ phf_generator-0.8.0 \
+ phf_shared-0.8.0 \
+ pin-project-1.0.8 \
+ pin-project-internal-1.0.8 \
+ pin-project-lite-0.1.12 \
+ pin-project-lite-0.2.7 \
pin-utils-0.1.0 \
pkg-config-0.3.19 \
- podio-0.1.7 \
- ppv-lite86-0.2.9 \
- proc-macro-crate-0.1.5 \
- proc-macro-hack-0.5.18 \
+ ppv-lite86-0.2.10 \
+ precomputed-hash-0.1.1 \
+ proc-macro-crate-1.0.0 \
+ proc-macro-hack-0.5.19 \
proc-macro-nested-0.1.6 \
- proc-macro2-1.0.24 \
- prost-0.6.1 \
- prost-build-0.6.1 \
- prost-derive-0.6.1 \
- prost-types-0.6.1 \
- pyo3-0.11.1 \
- pyo3-derive-backend-0.11.1 \
- pyo3cls-0.11.1 \
- quote-1.0.7 \
+ proc-macro2-1.0.27 \
+ prost-0.7.0 \
+ prost-build-0.7.0 \
+ prost-derive-0.7.0 \
+ prost-types-0.7.0 \
+ pulldown-cmark-0.8.0 \
+ pyo3-0.13.2 \
+ pyo3-macros-0.13.2 \
+ pyo3-macros-backend-0.13.2 \
+ quote-1.0.9 \
+ radium-0.5.3 \
rand-0.7.3 \
+ rand-0.8.4 \
rand_chacha-0.2.2 \
+ rand_chacha-0.3.1 \
rand_core-0.5.1 \
+ rand_core-0.6.3 \
rand_hc-0.2.0 \
- redox_syscall-0.1.57 \
- redox_users-0.3.5 \
- regex-1.4.1 \
- regex-syntax-0.6.20 \
+ rand_hc-0.3.1 \
+ rand_pcg-0.2.1 \
+ redox_syscall-0.2.9 \
+ redox_users-0.4.0 \
+ regex-1.5.4 \
+ regex-syntax-0.6.25 \
remove_dir_all-0.5.3 \
- rental-0.5.5 \
+ rental-0.5.6 \
rental-impl-0.5.5 \
- rusqlite-0.23.1 \
- rust-argon2-0.8.2 \
- rustc-demangle-0.1.18 \
+ ring-0.16.20 \
+ rusqlite-0.24.2 \
+ rustc-demangle-0.1.20 \
+ rustc-hash-1.1.0 \
+ rustls-0.18.1 \
+ rustversion-1.0.5 \
ryu-1.0.5 \
schannel-0.1.19 \
scopeguard-1.1.0 \
- security-framework-0.4.4 \
- security-framework-sys-0.4.3 \
- serde-1.0.117 \
+ sct-0.6.1 \
+ security-framework-2.3.1 \
+ security-framework-sys-2.3.0 \
+ serde-1.0.126 \
serde-aux-0.6.1 \
- serde_derive-1.0.117 \
- serde_json-1.0.59 \
- serde_repr-0.1.6 \
+ serde_derive-1.0.126 \
+ serde_json-1.0.64 \
+ serde_repr-0.1.7 \
serde_tuple-0.5.0 \
serde_tuple_macros-0.5.0 \
serde_urlencoded-0.6.1 \
sha1-0.6.0 \
- slab-0.4.2 \
- slog-2.5.2 \
- slog-async-2.5.0 \
+ siphasher-0.3.5 \
+ slab-0.4.3 \
+ slog-2.7.0 \
+ slog-async-2.6.0 \
slog-envlogger-2.2.0 \
- slog-scope-4.3.0 \
+ slog-scope-4.4.0 \
slog-stdlog-4.1.0 \
- slog-term-2.6.0 \
- smallvec-1.4.2 \
- socket2-0.3.15 \
+ slog-term-2.8.0 \
+ smallvec-1.6.1 \
+ socket2-0.3.19 \
+ spin-0.5.2 \
stable_deref_trait-1.2.0 \
static_assertions-1.1.0 \
- subtle-2.3.0 \
- syn-1.0.46 \
- synstructure-0.12.4 \
+ string_cache-0.8.1 \
+ string_cache_codegen-0.5.1 \
+ subtle-2.4.1 \
+ syn-1.0.74 \
+ synstructure-0.12.5 \
take_mut-0.2.2 \
- tempfile-3.1.0 \
- term-0.6.1 \
- thiserror-1.0.21 \
- thiserror-impl-1.0.21 \
- thread_local-1.0.1 \
- time-0.1.44 \
+ tap-1.0.1 \
+ tempfile-3.2.0 \
+ tendril-0.4.2 \
+ term-0.7.0 \
+ termcolor-1.1.2 \
+ thiserror-1.0.26 \
+ thiserror-impl-1.0.26 \
+ thread_local-1.1.3 \
+ time-0.1.43 \
tinystr-0.3.4 \
- tinyvec-0.3.4 \
- tokio-0.2.22 \
- tokio-socks-0.2.2 \
+ tinyvec-1.3.1 \
+ tinyvec_macros-0.1.0 \
+ tokio-0.2.25 \
+ tokio-rustls-0.14.1 \
+ tokio-socks-0.3.0 \
tokio-tls-0.3.1 \
tokio-util-0.3.1 \
- toml-0.5.7 \
- tower-service-0.3.0 \
- tracing-0.1.21 \
- tracing-core-0.1.17 \
+ toml-0.5.8 \
+ tower-service-0.3.1 \
+ tracing-0.1.26 \
+ tracing-core-0.1.18 \
+ tracing-futures-0.2.5 \
try-lock-0.2.3 \
- type-map-0.3.0 \
- typenum-1.12.0 \
- unic-langid-0.8.0 \
- unic-langid-impl-0.8.0 \
- unic-langid-macros-0.8.0 \
- unic-langid-macros-impl-0.8.0 \
+ type-map-0.4.0 \
+ typenum-1.13.0 \
+ unic-langid-0.9.0 \
+ unic-langid-impl-0.9.0 \
+ unic-langid-macros-0.9.0 \
+ unic-langid-macros-impl-0.9.0 \
unicase-2.6.0 \
- unicode-bidi-0.3.4 \
- unicode-normalization-0.1.13 \
- unicode-segmentation-1.6.0 \
- unicode-xid-0.2.1 \
+ unicode-bidi-0.3.5 \
+ unicode-normalization-0.1.19 \
+ unicode-segmentation-1.8.0 \
+ unicode-width-0.1.8 \
+ unicode-xid-0.2.2 \
unindent-0.1.7 \
- url-2.1.1 \
+ untrusted-0.7.1 \
+ url-2.2.2 \
+ utf-8-0.7.6 \
utime-0.3.1 \
- vcpkg-0.2.10 \
- version_check-0.9.2 \
+ vcpkg-0.2.15 \
+ version_check-0.9.3 \
want-0.3.0 \
wasi-0.9.0+wasi-snapshot-preview1 \
- wasi-0.10.0+wasi-snapshot-preview1 \
- wasm-bindgen-0.2.68 \
- wasm-bindgen-backend-0.2.68 \
- wasm-bindgen-futures-0.4.18 \
- wasm-bindgen-macro-0.2.68 \
- wasm-bindgen-macro-support-0.2.68 \
- wasm-bindgen-shared-0.2.68 \
- web-sys-0.3.45 \
- which-3.1.1 \
+ wasi-0.10.2+wasi-snapshot-preview1 \
+ wasm-bindgen-0.2.74 \
+ wasm-bindgen-backend-0.2.74 \
+ wasm-bindgen-futures-0.4.24 \
+ wasm-bindgen-macro-0.2.74 \
+ wasm-bindgen-macro-support-0.2.74 \
+ wasm-bindgen-shared-0.2.74 \
+ web-sys-0.3.51 \
+ webpki-0.21.4 \
+ webpki-roots-0.20.0 \
+ which-4.1.0 \
winapi-0.2.8 \
winapi-0.3.9 \
winapi-build-0.1.1 \
winapi-i686-pc-windows-gnu-0.4.0 \
+ winapi-util-0.1.5 \
winapi-x86_64-pc-windows-gnu-0.4.0 \
- winreg-0.6.2 \
+ winreg-0.7.0 \
ws2_32-sys-0.2.1 \
- zip-0.5.6
+ wyz-0.2.0 \
+ xml5ever-0.16.1 \
+ zip-0.5.13
CARGO_USE_GITHUB= yes
-
-CARGO_CARGOLOCK= ${WRKSRC}/rspy/Cargo.lock
-CARGO_CARGOTOML= ${WRKSRC}/rspy/Cargo.toml
+CARGO_CARGOTOML= ${WRKSRC}/pylib/rsbridge/Cargo.toml
CARGO_BUILD= no
CARGO_INSTALL= no
-MAKE_ARGS= DEVEL="rspy pylib ts qt" PYTHON_FILE="${PYTHON_CMD}" SHELL="${LOCALBASE}/bin/bash"
-# devel/py-maturin acts as a wrapper for "cargo" and "rustc". Ensure that it
-# uses the arguments/flags for Rust of the Ports framework.
-MAKE_ARGS+= BUILDFLAGS="--cargo-extra-args='${CARGO_BUILD_ARGS} --verbose'"
-MAKE_ENV= ${CARGO_ENV} npm_config_offline=true
-
-ALL_TARGET= build
+# BAZEL=1 is required otherwise ${WRKSRC}/rslib/build/main.rs produces a dummy
+# buildinfo.txt that doesn't contain the actual build hash.
+CARGO_ENV= BAZEL=1 \
+ BUILDINFO=${_MY_LOCALREPO}/rust_output/buildinfo.txt \
+ PYO3_PYTHON=${PYTHON_CMD} \
+ PROTOC=${LOCALBASE}/bin/protoc \
+ BACKEND_PROTO=${WRKSRC}/rslib/backend.proto \
+ RSLIB_FTL_ROOT=${_MY_LOCALREPO}/ftlrslib/l10n.toml \
+ EXTRA_FTL_ROOT=${_MY_LOCALREPO}/ftlextra/l10n.toml
-PLIST_SUB= _PY_SONAME=${_PY_SONAME}
-
-OPTIONS_DEFINE= NLS
OPTIONS_DEFAULT= MPV
OPTIONS_GROUP= PLAYER
OPTIONS_GROUP_PLAYER= MPLAYER MPV
@@ -350,101 +409,164 @@ MPV_DESC= mpv media player support
MPLAYER_RUN_DEPENDS= mplayer:multimedia/mplayer
MPV_RUN_DEPENDS= mpv:multimedia/mpv
-NLS_USES= gettext
-
# Should contain the most recent commit that reflects ${DISTVERSION} and must
# be exactly 8 digits otherwise the check for newer versions won't work as
# expected.
-_MY_BUILDHASH= 84dcaa86
-
-.include <bsd.port.pre.mk>
+_MY_BUILDHASH= b2b3275f
+# Path of the local bazel repositories
+_MY_LOCALREPO= ${WRKSRC}/local_repos
+# Path of cache that is used by www/yarn
+_MY_YARNCACHE= ${WRKDIR}/.yarn
-.if ${PYTHON_REL} < 30800
-_PY_SONAME= .cpython-${PYTHON_SUFFIX}m
-.else
-_PY_SONAME= ${PYTHON_EXT_SUFFIX}
-.endif
-
-# Place the translation files to the appropriate directories
post-extract:
- @${RLN} ${WRKSRC_i18ncore} ${WRKSRC}/rslib/ftl/repo
- @${RLN} ${WRKSRC_i18nfluent} ${WRKSRC}/qt/ftl/repo
- @${RLN} ${WRKSRC_i18ndesktop} ${WRKSRC}/qt/po/repo
+ # Create a configuration file for bazel
+ @${ECHO_CMD} "startup --batch" > ${WRKSRC}/user.bazelrc
+ # Create local repositories which are used by bazel
+ @${MKDIR} ${_MY_LOCALREPO} \
+ ${_MY_LOCALREPO}/local_node/node/bin \
+ ${_MY_LOCALREPO}/local_node/node/lib \
+ ${_MY_LOCALREPO}/local_node/yarn/bin \
+ ${_MY_LOCALREPO}/protoc_bin_freebsd/bin \
+ ${_MY_LOCALREPO}/pyqt5 \
+ ${_MY_LOCALREPO}/rust_output/fluent_proto \
+ ${_MY_LOCALREPO}/rust_output/librsbridge
+ # Create empty WORKSPACE files in the top directory of each local
+ # repository
+ @${TOUCH} ${_MY_LOCALREPO}/local_node/WORKSPACE \
+ ${_MY_LOCALREPO}/protoc_bin_freebsd/WORKSPACE \
+ ${_MY_LOCALREPO}/pyqt5/WORKSPACE \
+ ${_MY_LOCALREPO}/rust_output/WORKSPACE
+ # Copy the bazel rules for NodeJS to the custom local repository as
+ # they need some patching
+ @${CP} -r ${WRKSRC_bzlrnodejs} ${_MY_LOCALREPO}/rules_nodejs
+ # Link the remaining bazel rules into the custom local repository as
+ # they don't need to be patched
+.for _dir in bzlskylib bzlrcc bzlrjava bzlrpip bzlrproto bzlrpython bzlrrust bzlrsass bzlrsvelte ftlextra ftlrslib
+ @${RLN} ${WRKSRC_${_dir}} ${_MY_LOCALREPO}/${_dir:S/bzlr/rules_/}
+.endfor
+ # Copy custom BUILD.bazel files to the local repositories
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-local_node \
+ ${_MY_LOCALREPO}/local_node/BUILD.bazel
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-protoc_bin_freebsd \
+ ${_MY_LOCALREPO}/protoc_bin_freebsd/BUILD.bazel
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-pyqt5 \
+ ${_MY_LOCALREPO}/pyqt5/BUILD.bazel
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-rust_output-fluent_proto \
+ ${_MY_LOCALREPO}/rust_output/fluent_proto/BUILD.bazel
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-rust_output-librsbridge \
+ ${_MY_LOCALREPO}/rust_output/librsbridge/BUILD.bazel
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-i18n ${WRKSRC_ftlrslib}/BUILD.bazel
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-i18n ${WRKSRC_ftlextra}/BUILD.bazel
+ # Move some files out of the way as they will be replaced by custom copies.
+ @${MV} ${WRKSRC}/repos.bzl ${WRKSRC}/repos.bzl.dist
+ @${MV} ${WRKSRC}/pip/pyqt5/defs.bzl ${WRKSRC}/pip/pyqt5/defs.bzl.dist
+ @${MV} ${WRKSRC}/pylib/rsbridge/BUILD.bazel ${WRKSRC}/pylib/rsbridge/BUILD.bazel.dist
+ @${MV} ${WRKSRC}/rslib/BUILD.bazel ${WRKSRC}/rslib/BUILD.bazel.dist
+ # Required for a successful Rust compilation
+ @${MV} ${WRKSRC}/Cargo.lock ${WRKSRC}/Cargo.lock.dist
+ # Copy the replacement files
+ @${CP} ${FILESDIR}/bazel/repos.bzl ${WRKSRC}/
+ @${CP} ${FILESDIR}/bazel/pyqt5.bzl ${WRKSRC}/pip/pyqt5/defs.bzl
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-pylib-rsbridge \
+ ${WRKSRC}/pylib/rsbridge/BUILD.bazel
+ @${CP} ${FILESDIR}/bazel/BUILD.bazel-rslib \
+ ${WRKSRC}/rslib/BUILD.bazel
post-patch:
- # Add trailing directory names to cargo repositories
- @${REINPLACE_CMD} -Ee '/^fluent =/ s|(${WRKSRC_fluent})|\1/fluent|; \
- /^intl-memoizer =/ s|(${WRKSRC_fluent})|\1/intl-memoizer|' ${WRKSRC}/rslib/Cargo.toml
- @${REINPLACE_CMD} -e 's|%%DATADIR%%|${DATADIR}|' ${WRKSRC}/qt/runanki
- @${REINPLACE_CMD} -e 's|%%MAKE_CMD%%|${MAKE_CMD}|' ${WRKSRC}/qt/Makefile
- @${REINPLACE_CMD} -e 's|%%UNZIP_NATIVE_CMD%%|${UNZIP_NATIVE_CMD}|' ${WRKSRC}/rspy/Makefile
-
-post-patch-NLS-on:
- @${REINPLACE_CMD} -e 's|### NLS ###||' ${WRKSRC}/qt/Makefile
+ @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \
+ ${_MY_LOCALREPO}/rules_nodejs/internal/node/node_patches.js
+ @${REINPLACE_CMD} -e 's|\@PREFIX\@|${PREFIX}|' \
+ ${WRKSRC}/qt/tools/runanki.system.in
+ @${REINPLACE_CMD} -e 's|%%_MY_BUILDHASH%%|${_MY_BUILDHASH}|' \
+ ${WRKSRC}/scripts/status.sh
+ @${REINPLACE_CMD} -e 's|%%_MY_LOCALREPO%%|${_MY_LOCALREPO}|g' \
+ ${WRKSRC}/repos.bzl ${WRKSRC}/protobuf.bzl
+ @${REINPLACE_CMD} -e 's|%%_MY_YARNCACHE%%|${_MY_YARNCACHE}|' \
+ ${_MY_LOCALREPO}/rules_nodejs/internal/npm_install/npm_install.bzl
-# Although PYTHON_FILE is set to ${PYTHON_CMD} via MAKE_ARGS to make the
-# compilation of the pyo3 crate possible there are also hardcoded "python"
-# occurences in too many places.
pre-configure:
- ${MKDIR} ${WRKDIR}/.bin && ${LN} -s ${PYTHON_CMD} ${WRKDIR}/.bin/python
+ # Link the binaries of Node, Protobuf and Yarn into the local bazel
+ # repositories to provide them during build.
+ ${LN} -s ${LOCALBASE}/bin/protoc-gen-mypy ${WRKSRC}/pylib/tools/protoc-gen-mypy
+ ${LN} -s ${LOCALBASE}/bin/node ${_MY_LOCALREPO}/local_node/node/bin/node
+ ${LN} -s ${LOCALBASE}/bin/yarn.js ${_MY_LOCALREPO}/local_node/yarn/bin/yarn.js
+ ${LN} -s ${LOCALBASE}/bin/protoc ${_MY_LOCALREPO}/protoc_bin_freebsd/bin/protoc
# Overview of the build process
#
+# Steps 1 and 2 are built separately from the bazel build process.
+#
# 1. rslib (Rust library, implictly built by step 2)
-# `-> produces ${WRKSRC}/proto/fluent.proto
-# 2. rspy (Rust/Python bridge) which is built by devel/py-maturin
-# `-> produces ${WRKSRC}/pylib/ankirspy.cpython-${PYTHON_SUFFIX}m.so
-# 3. pylib (Python-only library)
-# 4. ts (builds ${WRKSRC}/ts/node_modules/.bin/{tsc,sass})
-# 5. qt (Python library with Qt5 bindings)
+# `-> produces ${_MY_LOCALREPO}/rust_output/fluent.proto
+# 2. pylib/rsbridge (Rust/Python bridge)
+# `-> produces ${_MY_LOCALREPO}/rust_output/librsbridge.so
+# 3. The remaining components (Python, Qt5 and JS) are built by bazel
pre-build:
- # Set the buildhash that is used at various places during build.
- ${ECHO_CMD} ${_MY_BUILDHASH} > ${WRKSRC}/meta/buildhash
+ # Generate buildinfo.txt which is used via BUILDINFO in ${CARGO_ENV} during
+ # compilation.
+ ${ECHO_CMD} -e "STABLE_VERSION ${DISTVERSION}\nSTABLE_BUILDHASH ${_MY_BUILDHASH}" >> ${_MY_LOCALREPO}/rust_output/buildinfo.txt
+ ${CARGO_CARGO_RUN} build \
+ --manifest-path ${CARGO_CARGOTOML} \
+ --verbose \
+ ${CARGO_BUILD_ARGS}
+ # These files are required for the remaining build process via bazel so copy
+ # them the local repository.
+ ${CP} `${FIND} ${CARGO_TARGET_DIR} -name "fluent.proto"` ${_MY_LOCALREPO}/rust_output/fluent_proto/
+ ${CP} `${FIND} ${CARGO_TARGET_DIR} -name "librsbridge.so"` ${_MY_LOCALREPO}/rust_output/librsbridge/
+
+do-build:
+ cd ${WRKSRC} && \
+ bazel --output_user_root="${WRKDIR}/.bazel" build \
+ --action_env=PYTHON_SITE_PACKAGES="${PYTHON_SITELIBDIR}" \
+ --action_env=PYTHON_SYS_EXECUTABLE="${PYTHON_CMD}" \
+ --compilation_mode opt \
+ --subcommands \
+ dist
post-build:
+ ${TAR} -xf `${FIND} ${WRKDIR}/.bazel -name "dist.tar"` -C ${WRKSRC}
+ cd ${WRKSRC}/bazel-dist && \
+ ${UNZIP_NATIVE_CMD} anki-${DISTVERSION}-*.whl && \
+ ${UNZIP_NATIVE_CMD} aqt-${DISTVERSION}-*.whl
# Compile Anki's Python libary (pylib) and Qt5 library (aqt) to prepare
# them for installation
- ${PYTHON_CMD} -m compileall ${WRKSRC}/pylib/anki
- ${PYTHON_CMD} -O -m compileall ${WRKSRC}/pylib/anki
- ${PYTHON_CMD} -m compileall ${WRKSRC}/qt/aqt
- ${PYTHON_CMD} -O -m compileall ${WRKSRC}/qt/aqt
+ ${PYTHON_CMD} -m compileall ${WRKSRC}/bazel-dist/anki
+ ${PYTHON_CMD} -O -m compileall ${WRKSRC}/bazel-dist/anki
+ ${PYTHON_CMD} -m compileall ${WRKSRC}/bazel-dist/aqt
+ ${PYTHON_CMD} -O -m compileall ${WRKSRC}/bazel-dist/aqt
do-install:
${MKDIR} ${STAGEDIR}${DATADIR}/anki \
${STAGEDIR}${DATADIR}/aqt \
- ${STAGEDIR}${DATADIR}/aqt_data \
${STAGEDIR}${PREFIX}/share/pixmaps \
${STAGEDIR}${PREFIX}/share/applications
- cd ${WRKSRC}/pylib \
+ cd ${WRKSRC}/bazel-dist/ \
&& ${COPYTREE_SHARE} anki ${STAGEDIR}${DATADIR} "! -name .gitignore" \
- && ${INSTALL_LIB} *.so ${STAGEDIR}${DATADIR}
- cd ${WRKSRC}/qt \
- && ${COPYTREE_SHARE} aqt ${STAGEDIR}${DATADIR} "! -name .gitignore" \
- && ${COPYTREE_SHARE} aqt_data ${STAGEDIR}${DATADIR} "! -name .gitignore" \
+ && ${COPYTREE_SHARE} aqt ${STAGEDIR}${DATADIR} "! -name .gitignore"
+ cd ${WRKSRC}/qt/linux \
&& ${INSTALL_DATA} anki.xpm anki.png ${STAGEDIR}${PREFIX}/share/pixmaps \
&& ${INSTALL_DATA} anki.desktop ${STAGEDIR}${PREFIX}/share/applications \
- && ${INSTALL_MAN} anki.1 ${STAGEDIR}${MANPREFIX}/man/man1 \
- && ${INSTALL_SCRIPT} runanki ${STAGEDIR}${PREFIX}/bin/anki
+ && ${INSTALL_MAN} anki.1 ${STAGEDIR}${MANPREFIX}/man/man1
+ cd ${WRKSRC}/qt/tools \
+ && ${INSTALL_SCRIPT} runanki.system.in ${STAGEDIR}${PREFIX}/bin/anki
+ ${STRIP_CMD} ${STAGEDIR}${DATADIR}/anki/_backend/rsbridge.so
-# Helper target to make the generation of the npm cache easier
-#
-# The command "npx pbjs" tries to install additional dependencies for the CLI
-# component of the "protobufjs" package and will fail during build because the
-# environment variable "npm_config_offline" is set to "true" via ${MAKE_ENV}.
-#
-# Thus "npx pbjs" is issued after "npm install" to get the remaining
-# dependencies to populate the cache with them.
-make-npm-cache:
+# Helper target to make the generation of the yarn cache easier
+make-yarn-cache:
# Run "make extract" before executing this target
- @cd ${WRKDIR} && ${RM} -r .npm
+ @${RM} -r ${_MY_YARNCACHE}
@cd ${WRKSRC}/ts \
- && ${SETENV} HOME=${WRKDIR} npm install \
- && ${TOUCH} in.proto \
- && ${SETENV} HOME=${WRKDIR} npx --cache ${WRKDIR}/.npm pbjs -q -t static-module in.proto -o out.proto
- @cd ${WRKDIR}/.npm \
- && ${RM} -r _locks anonymous-cli-metrics.json
+ && ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
+ @cd ${WRKSRC_bzlrnodejs}/packages/labs/grpc_web/ \
+ && ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
+ @cd ${WRKSRC_bzlrnodejs}/packages/labs/protobufjs/ \
+ && ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
+ @cd ${WRKSRC_bzlrsass}/sass \
+ && ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
+ @cd ${WRKSRC_bzlrsvelte}/internal \
+ && ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
@cd ${WRKDIR} \
- && ${TAR} -czf ${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX} .npm \
- && ${ECHO} "Please upload the file ${WRKDIR}/${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX}"
+ && ${TAR} -czf ${PORTNAME}-yarn-cache-${DISTVERSION}${EXTRACT_SUFX} .yarn \
+ && ${ECHO} "Please upload the file ${WRKDIR}/${PORTNAME}-yarn-cache-${DISTVERSION}${EXTRACT_SUFX}"
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/games/anki/distinfo b/games/anki/distinfo
index 95be963edb9d..a1520a3a8641 100644
--- a/games/anki/distinfo
+++ b/games/anki/distinfo
@@ -1,521 +1,643 @@
-TIMESTAMP = 1624129001
-SHA256 (python/anki-npm-cache-2.1.35.tar.gz) = 2168a9374715882affbaaa78d2775bc365f23cab6ecf3e74154936e128d01246
-SIZE (python/anki-npm-cache-2.1.35.tar.gz) = 51533006
-SHA256 (python/rust/crates/addr2line-0.13.0.tar.gz) = 1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072
-SIZE (python/rust/crates/addr2line-0.13.0.tar.gz) = 29996
-SHA256 (python/rust/crates/adler-0.2.3.tar.gz) = ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e
-SIZE (python/rust/crates/adler-0.2.3.tar.gz) = 12168
-SHA256 (python/rust/crates/aho-corasick-0.7.14.tar.gz) = b476ce7103678b0c6d3d395dbbae31d48ff910bd28be979ba5d48c6351131d0d
-SIZE (python/rust/crates/aho-corasick-0.7.14.tar.gz) = 113042
-SHA256 (python/rust/crates/anyhow-1.0.33.tar.gz) = a1fd36ffbb1fb7c834eac128ea8d0e310c5aeb635548f9d58861e1308d46e71c
-SIZE (python/rust/crates/anyhow-1.0.33.tar.gz) = 28540
-SHA256 (python/rust/crates/arc-swap-0.4.7.tar.gz) = 4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034
-SIZE (python/rust/crates/arc-swap-0.4.7.tar.gz) = 48625
-SHA256 (python/rust/crates/arrayref-0.3.6.tar.gz) = a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544
-SIZE (python/rust/crates/arrayref-0.3.6.tar.gz) = 10035
-SHA256 (python/rust/crates/arrayvec-0.4.12.tar.gz) = cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9
-SIZE (python/rust/crates/arrayvec-0.4.12.tar.gz) = 26551
-SHA256 (python/rust/crates/arrayvec-0.5.1.tar.gz) = cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8
-SIZE (python/rust/crates/arrayvec-0.5.1.tar.gz) = 26816
-SHA256 (python/rust/crates/askama-0.10.3.tar.gz) = 70a6e7ebd44d0047fd48206c83c5cd3214acc7b9d87f001da170145c47ef7d12
-SIZE (python/rust/crates/askama-0.10.3.tar.gz) = 7988
-SHA256 (python/rust/crates/askama_derive-0.10.3.tar.gz) = e1d7169690c4f56343dcd821ab834972a22570a2662a19a84fd7775d5e1c3881
-SIZE (python/rust/crates/askama_derive-0.10.3.tar.gz) = 6834
-SHA256 (python/rust/crates/askama_escape-0.10.1.tar.gz) = 90c108c1a94380c89d2215d0ac54ce09796823cca0fd91b299cfff3b33e346fb
-SIZE (python/rust/crates/askama_escape-0.10.1.tar.gz) = 8535
-SHA256 (python/rust/crates/askama_shared-0.10.4.tar.gz) = 62fc272363345c8cdc030e4c259d9d028237f8b057dc9bb327772a257bde6bb5
-SIZE (python/rust/crates/askama_shared-0.10.4.tar.gz) = 29058
-SHA256 (python/rust/crates/async-compression-0.3.5.tar.gz) = 9021768bcce77296b64648cc7a7460e3df99979b97ed5c925c38d1cc83778d98
-SIZE (python/rust/crates/async-compression-0.3.5.tar.gz) = 39371
-SHA256 (python/rust/crates/atty-0.2.14.tar.gz) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
-SIZE (python/rust/crates/atty-0.2.14.tar.gz) = 5470
-SHA256 (python/rust/crates/autocfg-1.0.1.tar.gz) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
-SIZE (python/rust/crates/autocfg-1.0.1.tar.gz) = 12908
-SHA256 (python/rust/crates/backtrace-0.3.53.tar.gz) = 707b586e0e2f247cbde68cdd2c3ce69ea7b7be43e1c5b426e37c9319c4b9838e
-SIZE (python/rust/crates/backtrace-0.3.53.tar.gz) = 71892
-SHA256 (python/rust/crates/base64-0.12.3.tar.gz) = 3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff
-SIZE (python/rust/crates/base64-0.12.3.tar.gz) = 57545
-SHA256 (python/rust/crates/bitflags-1.2.1.tar.gz) = cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693
-SIZE (python/rust/crates/bitflags-1.2.1.tar.gz) = 16745
-SHA256 (python/rust/crates/blake2b_simd-0.5.10.tar.gz) = d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a
-SIZE (python/rust/crates/blake2b_simd-0.5.10.tar.gz) = 34093
-SHA256 (python/rust/crates/blake3-0.3.7.tar.gz) = e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f
-SIZE (python/rust/crates/blake3-0.3.7.tar.gz) = 155136
-SHA256 (python/rust/crates/bumpalo-3.4.0.tar.gz) = 2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820
-SIZE (python/rust/crates/bumpalo-3.4.0.tar.gz) = 129102
-SHA256 (python/rust/crates/byteorder-1.3.4.tar.gz) = 08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de
-SIZE (python/rust/crates/byteorder-1.3.4.tar.gz) = 21943
-SHA256 (python/rust/crates/bytes-0.4.12.tar.gz) = 206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c
-SIZE (python/rust/crates/bytes-0.4.12.tar.gz) = 46361
-SHA256 (python/rust/crates/bytes-0.5.6.tar.gz) = 0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38
-SIZE (python/rust/crates/bytes-0.5.6.tar.gz) = 46291
-SHA256 (python/rust/crates/cc-1.0.61.tar.gz) = ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d
-SIZE (python/rust/crates/cc-1.0.61.tar.gz) = 53454
-SHA256 (python/rust/crates/cfg-if-0.1.10.tar.gz) = 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822
-SIZE (python/rust/crates/cfg-if-0.1.10.tar.gz) = 7933
-SHA256 (python/rust/crates/cfg-if-1.0.0.tar.gz) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
-SIZE (python/rust/crates/cfg-if-1.0.0.tar.gz) = 7934
-SHA256 (python/rust/crates/chrono-0.4.19.tar.gz) = 670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73
-SIZE (python/rust/crates/chrono-0.4.19.tar.gz) = 155663
-SHA256 (python/rust/crates/cloudabi-0.1.0.tar.gz) = 4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467
-SIZE (python/rust/crates/cloudabi-0.1.0.tar.gz) = 22687
-SHA256 (python/rust/crates/constant_time_eq-0.1.5.tar.gz) = 245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc
-SIZE (python/rust/crates/constant_time_eq-0.1.5.tar.gz) = 4936
-SHA256 (python/rust/crates/core-foundation-0.7.0.tar.gz) = 57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171
-SIZE (python/rust/crates/core-foundation-0.7.0.tar.gz) = 25384
-SHA256 (python/rust/crates/core-foundation-sys-0.7.0.tar.gz) = b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac
-SIZE (python/rust/crates/core-foundation-sys-0.7.0.tar.gz) = 17033
-SHA256 (python/rust/crates/crc32fast-1.2.1.tar.gz) = 81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a
-SIZE (python/rust/crates/crc32fast-1.2.1.tar.gz) = 38172
-SHA256 (python/rust/crates/crossbeam-channel-0.4.4.tar.gz) = b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87
-SIZE (python/rust/crates/crossbeam-channel-0.4.4.tar.gz) = 86868
-SHA256 (python/rust/crates/crossbeam-utils-0.7.2.tar.gz) = c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8
-SIZE (python/rust/crates/crossbeam-utils-0.7.2.tar.gz) = 34338
-SHA256 (python/rust/crates/crypto-mac-0.8.0.tar.gz) = b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab
-SIZE (python/rust/crates/crypto-mac-0.8.0.tar.gz) = 9115
-SHA256 (python/rust/crates/ctor-0.1.16.tar.gz) = 7fbaabec2c953050352311293be5c6aba8e141ba19d6811862b232d6fd020484
-SIZE (python/rust/crates/ctor-0.1.16.tar.gz) = 4770
-SHA256 (python/rust/crates/derivative-2.1.1.tar.gz) = cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f
-SIZE (python/rust/crates/derivative-2.1.1.tar.gz) = 45571
-SHA256 (python/rust/crates/digest-0.9.0.tar.gz) = d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
-SIZE (python/rust/crates/digest-0.9.0.tar.gz) = 13247
-SHA256 (python/rust/crates/dirs-2.0.2.tar.gz) = 13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3
-SIZE (python/rust/crates/dirs-2.0.2.tar.gz) = 11779
-SHA256 (python/rust/crates/dirs-sys-0.3.5.tar.gz) = 8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a
-SIZE (python/rust/crates/dirs-sys-0.3.5.tar.gz) = 10643
-SHA256 (python/rust/crates/dtoa-0.4.6.tar.gz) = 134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b
-SIZE (python/rust/crates/dtoa-0.4.6.tar.gz) = 15979
-SHA256 (python/rust/crates/either-1.6.1.tar.gz) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
-SIZE (python/rust/crates/either-1.6.1.tar.gz) = 13641
-SHA256 (python/rust/crates/encoding_rs-0.8.24.tar.gz) = a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2
-SIZE (python/rust/crates/encoding_rs-0.8.24.tar.gz) = 1366911
-SHA256 (python/rust/crates/failure-0.1.8.tar.gz) = d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86
-SIZE (python/rust/crates/failure-0.1.8.tar.gz) = 37582
-SHA256 (python/rust/crates/failure_derive-0.1.8.tar.gz) = aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4
-SIZE (python/rust/crates/failure_derive-0.1.8.tar.gz) = 4950
-SHA256 (python/rust/crates/fallible-iterator-0.2.0.tar.gz) = 4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7
-SIZE (python/rust/crates/fallible-iterator-0.2.0.tar.gz) = 18509
-SHA256 (python/rust/crates/fallible-streaming-iterator-0.1.9.tar.gz) = 7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a
-SIZE (python/rust/crates/fallible-streaming-iterator-0.1.9.tar.gz) = 9249
-SHA256 (python/rust/crates/fixedbitset-0.2.0.tar.gz) = 37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d
-SIZE (python/rust/crates/fixedbitset-0.2.0.tar.gz) = 13597
-SHA256 (python/rust/crates/flate2-1.0.18.tar.gz) = da80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60ee
-SIZE (python/rust/crates/flate2-1.0.18.tar.gz) = 74164
-SHA256 (python/rust/crates/fluent-langneg-0.12.1.tar.gz) = fe5815efd5542e40841cd34ef9003822352b04c67a70c595c6758597c72e1f56
-SIZE (python/rust/crates/fluent-langneg-0.12.1.tar.gz) = 19329
-SHA256 (python/rust/crates/fluent-syntax-0.9.3.tar.gz) = ac0f7e83d14cccbf26e165d8881dcac5891af0d85a88543c09dd72ebd31d91ba
-SIZE (python/rust/crates/fluent-syntax-0.9.3.tar.gz) = 73722
-SHA256 (python/rust/crates/fnv-1.0.7.tar.gz) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
-SIZE (python/rust/crates/fnv-1.0.7.tar.gz) = 11266
-SHA256 (python/rust/crates/foreign-types-0.3.2.tar.gz) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
-SIZE (python/rust/crates/foreign-types-0.3.2.tar.gz) = 7504
-SHA256 (python/rust/crates/foreign-types-shared-0.1.1.tar.gz) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
-SIZE (python/rust/crates/foreign-types-shared-0.1.1.tar.gz) = 5672
-SHA256 (python/rust/crates/fuchsia-zircon-0.3.3.tar.gz) = 2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82
-SIZE (python/rust/crates/fuchsia-zircon-0.3.3.tar.gz) = 22565
-SHA256 (python/rust/crates/fuchsia-zircon-sys-0.3.3.tar.gz) = 3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7
-SIZE (python/rust/crates/fuchsia-zircon-sys-0.3.3.tar.gz) = 7191
-SHA256 (python/rust/crates/futures-0.3.6.tar.gz) = 5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034e
-SIZE (python/rust/crates/futures-0.3.6.tar.gz) = 39860
-SHA256 (python/rust/crates/futures-channel-0.3.6.tar.gz) = a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74
-SIZE (python/rust/crates/futures-channel-0.3.6.tar.gz) = 29465
-SHA256 (python/rust/crates/futures-core-0.3.6.tar.gz) = d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b
-SIZE (python/rust/crates/futures-core-0.3.6.tar.gz) = 13838
-SHA256 (python/rust/crates/futures-executor-0.3.6.tar.gz) = cc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144ab
-SIZE (python/rust/crates/futures-executor-0.3.6.tar.gz) = 16639
-SHA256 (python/rust/crates/futures-io-0.3.6.tar.gz) = 5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c
-SIZE (python/rust/crates/futures-io-0.3.6.tar.gz) = 9129
-SHA256 (python/rust/crates/futures-macro-0.3.6.tar.gz) = f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b
-SIZE (python/rust/crates/futures-macro-0.3.6.tar.gz) = 9778
-SHA256 (python/rust/crates/futures-sink-0.3.6.tar.gz) = 0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd
-SIZE (python/rust/crates/futures-sink-0.3.6.tar.gz) = 7730
-SHA256 (python/rust/crates/futures-task-0.3.6.tar.gz) = 4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94
-SIZE (python/rust/crates/futures-task-0.3.6.tar.gz) = 11130
-SHA256 (python/rust/crates/futures-util-0.3.6.tar.gz) = 8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34
-SIZE (python/rust/crates/futures-util-0.3.6.tar.gz) = 133258
-SHA256 (python/rust/crates/fxhash-0.2.1.tar.gz) = c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c
-SIZE (python/rust/crates/fxhash-0.2.1.tar.gz) = 4102
-SHA256 (python/rust/crates/generic-array-0.14.4.tar.gz) = 501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817
-SIZE (python/rust/crates/generic-array-0.14.4.tar.gz) = 28916
-SHA256 (python/rust/crates/getrandom-0.1.15.tar.gz) = fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6
-SIZE (python/rust/crates/getrandom-0.1.15.tar.gz) = 24786
-SHA256 (python/rust/crates/ghost-0.1.2.tar.gz) = 1a5bcf1bbeab73aa4cf2fde60a846858dc036163c7c33bec309f8d17de785479
-SIZE (python/rust/crates/ghost-0.1.2.tar.gz) = 12777
-SHA256 (python/rust/crates/gimli-0.22.0.tar.gz) = aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724
-SIZE (python/rust/crates/gimli-0.22.0.tar.gz) = 704135
-SHA256 (python/rust/crates/h2-0.2.6.tar.gz) = 993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53
-SIZE (python/rust/crates/h2-0.2.6.tar.gz) = 157564
-SHA256 (python/rust/crates/hashbrown-0.9.1.tar.gz) = d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04
-SIZE (python/rust/crates/hashbrown-0.9.1.tar.gz) = 77734
-SHA256 (python/rust/crates/heck-0.3.1.tar.gz) = 20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205
-SIZE (python/rust/crates/heck-0.3.1.tar.gz) = 54666
-SHA256 (python/rust/crates/hermit-abi-0.1.17.tar.gz) = 5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8
-SIZE (python/rust/crates/hermit-abi-0.1.17.tar.gz) = 10065
-SHA256 (python/rust/crates/hex-0.4.2.tar.gz) = 644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35
-SIZE (python/rust/crates/hex-0.4.2.tar.gz) = 13385
-SHA256 (python/rust/crates/htmlescape-0.3.1.tar.gz) = e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163
-SIZE (python/rust/crates/htmlescape-0.3.1.tar.gz) = 53226
-SHA256 (python/rust/crates/http-0.2.1.tar.gz) = 28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9
-SIZE (python/rust/crates/http-0.2.1.tar.gz) = 102231
-SHA256 (python/rust/crates/http-body-0.3.1.tar.gz) = 13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b
-SIZE (python/rust/crates/http-body-0.3.1.tar.gz) = 5394
-SHA256 (python/rust/crates/httparse-1.3.4.tar.gz) = cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9
-SIZE (python/rust/crates/httparse-1.3.4.tar.gz) = 23739
-SHA256 (python/rust/crates/httpdate-0.3.2.tar.gz) = 494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47
-SIZE (python/rust/crates/httpdate-0.3.2.tar.gz) = 10768
-SHA256 (python/rust/crates/humansize-1.1.0.tar.gz) = b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e
-SIZE (python/rust/crates/humansize-1.1.0.tar.gz) = 4459
-SHA256 (python/rust/crates/hyper-0.13.8.tar.gz) = 2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835
-SIZE (python/rust/crates/hyper-0.13.8.tar.gz) = 139668
-SHA256 (python/rust/crates/hyper-tls-0.4.3.tar.gz) = d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed
-SIZE (python/rust/crates/hyper-tls-0.4.3.tar.gz) = 14195
-SHA256 (python/rust/crates/idna-0.2.0.tar.gz) = 02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9
-SIZE (python/rust/crates/idna-0.2.0.tar.gz) = 257203
-SHA256 (python/rust/crates/indexmap-1.6.0.tar.gz) = 55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2
-SIZE (python/rust/crates/indexmap-1.6.0.tar.gz) = 47565
-SHA256 (python/rust/crates/indoc-0.3.6.tar.gz) = 47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8
-SIZE (python/rust/crates/indoc-0.3.6.tar.gz) = 9663
-SHA256 (python/rust/crates/indoc-impl-0.3.6.tar.gz) = ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0
-SIZE (python/rust/crates/indoc-impl-0.3.6.tar.gz) = 7933
-SHA256 (python/rust/crates/instant-0.1.7.tar.gz) = 63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66
-SIZE (python/rust/crates/instant-0.1.7.tar.gz) = 5097
-SHA256 (python/rust/crates/intl_pluralrules-6.0.0.tar.gz) = d82c14d8eece42c03353e0ce86a4d3f97b1f1cef401e4d962dca6c6214a85002
-SIZE (python/rust/crates/intl_pluralrules-6.0.0.tar.gz) = 15999
-SHA256 (python/rust/crates/inventory-0.1.9.tar.gz) = fedd49de24d8c263613701406611410687148ae8c37cd6452650b250f753a0dd
-SIZE (python/rust/crates/inventory-0.1.9.tar.gz) = 11578
-SHA256 (python/rust/crates/inventory-impl-0.1.9.tar.gz) = ddead8880bc50f57fcd3b5869a7f6ff92570bb4e8f6870c22e2483272f2256da
-SIZE (python/rust/crates/inventory-impl-0.1.9.tar.gz) = 1859
-SHA256 (python/rust/crates/iovec-0.1.4.tar.gz) = b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e
-SIZE (python/rust/crates/iovec-0.1.4.tar.gz) = 8720
-SHA256 (python/rust/crates/itertools-0.8.2.tar.gz) = f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484
-SIZE (python/rust/crates/itertools-0.8.2.tar.gz) = 89203
-SHA256 (python/rust/crates/itertools-0.9.0.tar.gz) = 284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b
-SIZE (python/rust/crates/itertools-0.9.0.tar.gz) = 96429
-SHA256 (python/rust/crates/itoa-0.4.6.tar.gz) = dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6
-SIZE (python/rust/crates/itoa-0.4.6.tar.gz) = 12167
-SHA256 (python/rust/crates/js-sys-0.3.45.tar.gz) = ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8
-SIZE (python/rust/crates/js-sys-0.3.45.tar.gz) = 67143
-SHA256 (python/rust/crates/kernel32-sys-0.2.2.tar.gz) = 7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d
-SIZE (python/rust/crates/kernel32-sys-0.2.2.tar.gz) = 24537
-SHA256 (python/rust/crates/lazy_static-1.4.0.tar.gz) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
-SIZE (python/rust/crates/lazy_static-1.4.0.tar.gz) = 10443
-SHA256 (python/rust/crates/lexical-core-0.7.6.tar.gz) = 6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe
-SIZE (python/rust/crates/lexical-core-0.7.6.tar.gz) = 494385
-SHA256 (python/rust/crates/libc-0.2.79.tar.gz) = 2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743
-SIZE (python/rust/crates/libc-0.2.79.tar.gz) = 511752
-SHA256 (python/rust/crates/libsqlite3-sys-0.18.0.tar.gz) = 1e704a02bcaecd4a08b93a23f6be59d0bd79cd161e0963e9499165a0a35df7bd
-SIZE (python/rust/crates/libsqlite3-sys-0.18.0.tar.gz) = 2281735
-SHA256 (python/rust/crates/linked-hash-map-0.5.3.tar.gz) = 8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a
-SIZE (python/rust/crates/linked-hash-map-0.5.3.tar.gz) = 16130
-SHA256 (python/rust/crates/lock_api-0.4.1.tar.gz) = 28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c
-SIZE (python/rust/crates/lock_api-0.4.1.tar.gz) = 20339
-SHA256 (python/rust/crates/log-0.4.11.tar.gz) = 4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b
-SIZE (python/rust/crates/log-0.4.11.tar.gz) = 36276
-SHA256 (python/rust/crates/lru-cache-0.1.2.tar.gz) = 31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c
-SIZE (python/rust/crates/lru-cache-0.1.2.tar.gz) = 9307
-SHA256 (python/rust/crates/matches-0.1.8.tar.gz) = 7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08
-SIZE (python/rust/crates/matches-0.1.8.tar.gz) = 2216
-SHA256 (python/rust/crates/maybe-uninit-2.0.0.tar.gz) = 60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00
-SIZE (python/rust/crates/maybe-uninit-2.0.0.tar.gz) = 11809
-SHA256 (python/rust/crates/memchr-2.3.3.tar.gz) = 3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400
-SIZE (python/rust/crates/memchr-2.3.3.tar.gz) = 22566
-SHA256 (python/rust/crates/mime-0.3.16.tar.gz) = 2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d
-SIZE (python/rust/crates/mime-0.3.16.tar.gz) = 15206
-SHA256 (python/rust/crates/mime_guess-2.0.3.tar.gz) = 2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212
-SIZE (python/rust/crates/mime_guess-2.0.3.tar.gz) = 27437
-SHA256 (python/rust/crates/miniz_oxide-0.4.3.tar.gz) = 0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d
-SIZE (python/rust/crates/miniz_oxide-0.4.3.tar.gz) = 50058
-SHA256 (python/rust/crates/mio-0.6.22.tar.gz) = fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430
-SIZE (python/rust/crates/mio-0.6.22.tar.gz) = 102782
-SHA256 (python/rust/crates/miow-0.2.1.tar.gz) = 8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919
-SIZE (python/rust/crates/miow-0.2.1.tar.gz) = 21133
-SHA256 (python/rust/crates/multimap-0.8.2.tar.gz) = 1255076139a83bb467426e7f8d0134968a8118844faa755985e077cf31850333
-SIZE (python/rust/crates/multimap-0.8.2.tar.gz) = 13453
-SHA256 (python/rust/crates/native-tls-0.2.4.tar.gz) = 2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d
-SIZE (python/rust/crates/native-tls-0.2.4.tar.gz) = 32170
-SHA256 (python/rust/crates/net2-0.2.35.tar.gz) = 3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853
-SIZE (python/rust/crates/net2-0.2.35.tar.gz) = 20660
-SHA256 (python/rust/crates/nodrop-0.1.14.tar.gz) = 72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb
-SIZE (python/rust/crates/nodrop-0.1.14.tar.gz) = 7667
-SHA256 (python/rust/crates/nom-5.1.2.tar.gz) = ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af
-SIZE (python/rust/crates/nom-5.1.2.tar.gz) = 136174
-SHA256 (python/rust/crates/num-format-0.4.0.tar.gz) = bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465
-SIZE (python/rust/crates/num-format-0.4.0.tar.gz) = 59791
-SHA256 (python/rust/crates/num-integer-0.1.43.tar.gz) = 8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b
-SIZE (python/rust/crates/num-integer-0.1.43.tar.gz) = 21966
-SHA256 (python/rust/crates/num-traits-0.2.12.tar.gz) = ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611
-SIZE (python/rust/crates/num-traits-0.2.12.tar.gz) = 43807
-SHA256 (python/rust/crates/num_cpus-1.13.0.tar.gz) = 05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3
-SIZE (python/rust/crates/num_cpus-1.13.0.tar.gz) = 14704
-SHA256 (python/rust/crates/num_enum-0.5.1.tar.gz) = 226b45a5c2ac4dd696ed30fa6b94b057ad909c7b7fc2e0d0808192bced894066
-SIZE (python/rust/crates/num_enum-0.5.1.tar.gz) = 8210
-SHA256 (python/rust/crates/num_enum_derive-0.5.1.tar.gz) = 1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e
-SIZE (python/rust/crates/num_enum_derive-0.5.1.tar.gz) = 7579
-SHA256 (python/rust/crates/object-0.21.1.tar.gz) = 37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693
-SIZE (python/rust/crates/object-0.21.1.tar.gz) = 174624
-SHA256 (python/rust/crates/once_cell-1.4.1.tar.gz) = 260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad
-SIZE (python/rust/crates/once_cell-1.4.1.tar.gz) = 24366
-SHA256 (python/rust/crates/openssl-0.10.30.tar.gz) = 8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4
-SIZE (python/rust/crates/openssl-0.10.30.tar.gz) = 191808
-SHA256 (python/rust/crates/openssl-probe-0.1.2.tar.gz) = 77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de
-SIZE (python/rust/crates/openssl-probe-0.1.2.tar.gz) = 6427
-SHA256 (python/rust/crates/openssl-sys-0.9.58.tar.gz) = a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de
-SIZE (python/rust/crates/openssl-sys-0.9.58.tar.gz) = 47014
-SHA256 (python/rust/crates/parking_lot-0.11.0.tar.gz) = a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733
-SIZE (python/rust/crates/parking_lot-0.11.0.tar.gz) = 39558
-SHA256 (python/rust/crates/parking_lot_core-0.8.0.tar.gz) = c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b
-SIZE (python/rust/crates/parking_lot_core-0.8.0.tar.gz) = 33870
-SHA256 (python/rust/crates/paste-0.1.18.tar.gz) = 45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880
-SIZE (python/rust/crates/paste-0.1.18.tar.gz) = 12259
-SHA256 (python/rust/crates/paste-impl-0.1.18.tar.gz) = d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6
-SIZE (python/rust/crates/paste-impl-0.1.18.tar.gz) = 9451
-SHA256 (python/rust/crates/percent-encoding-2.1.0.tar.gz) = d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
-SIZE (python/rust/crates/percent-encoding-2.1.0.tar.gz) = 9748
-SHA256 (python/rust/crates/petgraph-0.5.1.tar.gz) = 467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7
-SIZE (python/rust/crates/petgraph-0.5.1.tar.gz) = 147173
-SHA256 (python/rust/crates/pin-project-0.4.27.tar.gz) = 2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15
-SIZE (python/rust/crates/pin-project-0.4.27.tar.gz) = 50964
-SHA256 (python/rust/crates/pin-project-internal-0.4.27.tar.gz) = 65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895
-SIZE (python/rust/crates/pin-project-internal-0.4.27.tar.gz) = 29739
-SHA256 (python/rust/crates/pin-project-lite-0.1.11.tar.gz) = c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b
-SIZE (python/rust/crates/pin-project-lite-0.1.11.tar.gz) = 25308
-SHA256 (python/rust/crates/pin-utils-0.1.0.tar.gz) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
-SIZE (python/rust/crates/pin-utils-0.1.0.tar.gz) = 7580
-SHA256 (python/rust/crates/pkg-config-0.3.19.tar.gz) = 3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c
-SIZE (python/rust/crates/pkg-config-0.3.19.tar.gz) = 15451
-SHA256 (python/rust/crates/podio-0.1.7.tar.gz) = b18befed8bc2b61abc79a457295e7e838417326da1586050b919414073977f19
-SIZE (python/rust/crates/podio-0.1.7.tar.gz) = 10294
-SHA256 (python/rust/crates/ppv-lite86-0.2.9.tar.gz) = c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20
-SIZE (python/rust/crates/ppv-lite86-0.2.9.tar.gz) = 20933
-SHA256 (python/rust/crates/proc-macro-crate-0.1.5.tar.gz) = 1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785
-SIZE (python/rust/crates/proc-macro-crate-0.1.5.tar.gz) = 8096
-SHA256 (python/rust/crates/proc-macro-hack-0.5.18.tar.gz) = 99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598
-SIZE (python/rust/crates/proc-macro-hack-0.5.18.tar.gz) = 14619
-SHA256 (python/rust/crates/proc-macro-nested-0.1.6.tar.gz) = eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a
-SIZE (python/rust/crates/proc-macro-nested-0.1.6.tar.gz) = 6498
-SHA256 (python/rust/crates/proc-macro2-1.0.24.tar.gz) = 1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71
-SIZE (python/rust/crates/proc-macro2-1.0.24.tar.gz) = 37716
-SHA256 (python/rust/crates/prost-0.6.1.tar.gz) = ce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212
-SIZE (python/rust/crates/prost-0.6.1.tar.gz) = 23393
-SHA256 (python/rust/crates/prost-build-0.6.1.tar.gz) = 02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26
-SIZE (python/rust/crates/prost-build-0.6.1.tar.gz) = 7935314
-SHA256 (python/rust/crates/prost-derive-0.6.1.tar.gz) = 537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72
-SIZE (python/rust/crates/prost-derive-0.6.1.tar.gz) = 15007
-SHA256 (python/rust/crates/prost-types-0.6.1.tar.gz) = 1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aa
-SIZE (python/rust/crates/prost-types-0.6.1.tar.gz) = 24092
-SHA256 (python/rust/crates/pyo3-0.11.1.tar.gz) = 9ca8710ffa8211c9a62a8a3863c4267c710dc42a82a7fd29c97de465d7ea6b7d
-SIZE (python/rust/crates/pyo3-0.11.1.tar.gz) = 230111
-SHA256 (python/rust/crates/pyo3-derive-backend-0.11.1.tar.gz) = 58ad070bf6967b0d29ea74931ffcf9c6bbe8402a726e9afbeafadc0a287cc2b3
-SIZE (python/rust/crates/pyo3-derive-backend-0.11.1.tar.gz) = 25011
-SHA256 (python/rust/crates/pyo3cls-0.11.1.tar.gz) = c3fa17e1ea569d0bf3b7c00f2a9eea831ca05e55dd76f1794c541abba1c64baa
-SIZE (python/rust/crates/pyo3cls-0.11.1.tar.gz) = 1693
-SHA256 (python/rust/crates/quote-1.0.7.tar.gz) = aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37
-SIZE (python/rust/crates/quote-1.0.7.tar.gz) = 25170
-SHA256 (python/rust/crates/rand-0.7.3.tar.gz) = 6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03
-SIZE (python/rust/crates/rand-0.7.3.tar.gz) = 112246
-SHA256 (python/rust/crates/rand_chacha-0.2.2.tar.gz) = f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402
-SIZE (python/rust/crates/rand_chacha-0.2.2.tar.gz) = 13267
-SHA256 (python/rust/crates/rand_core-0.5.1.tar.gz) = 90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19
-SIZE (python/rust/crates/rand_core-0.5.1.tar.gz) = 21116
-SHA256 (python/rust/crates/rand_hc-0.2.0.tar.gz) = ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c
-SIZE (python/rust/crates/rand_hc-0.2.0.tar.gz) = 11670
-SHA256 (python/rust/crates/redox_syscall-0.1.57.tar.gz) = 41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce
-SIZE (python/rust/crates/redox_syscall-0.1.57.tar.gz) = 17087
-SHA256 (python/rust/crates/redox_users-0.3.5.tar.gz) = de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d
-SIZE (python/rust/crates/redox_users-0.3.5.tar.gz) = 12644
-SHA256 (python/rust/crates/regex-1.4.1.tar.gz) = 8963b85b8ce3074fecffde43b4b0dded83ce2f367dc8d363afc56679f3ee820b
-SIZE (python/rust/crates/regex-1.4.1.tar.gz) = 236871
-SHA256 (python/rust/crates/regex-syntax-0.6.20.tar.gz) = 8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11c
-SIZE (python/rust/crates/regex-syntax-0.6.20.tar.gz) = 293727
-SHA256 (python/rust/crates/remove_dir_all-0.5.3.tar.gz) = 3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7
-SIZE (python/rust/crates/remove_dir_all-0.5.3.tar.gz) = 9184
-SHA256 (python/rust/crates/rental-0.5.5.tar.gz) = 8545debe98b2b139fb04cad8618b530e9b07c152d99a5de83c860b877d67847f
-SIZE (python/rust/crates/rental-0.5.5.tar.gz) = 16796
-SHA256 (python/rust/crates/rental-impl-0.5.5.tar.gz) = 475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de
-SIZE (python/rust/crates/rental-impl-0.5.5.tar.gz) = 12093
-SHA256 (python/rust/crates/rusqlite-0.23.1.tar.gz) = 45d0fd62e1df63d254714e6cb40d0a0e82e7a1623e7a27f679d851af092ae58b
-SIZE (python/rust/crates/rusqlite-0.23.1.tar.gz) = 112106
-SHA256 (python/rust/crates/rust-argon2-0.8.2.tar.gz) = 9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19
-SIZE (python/rust/crates/rust-argon2-0.8.2.tar.gz) = 28291
-SHA256 (python/rust/crates/rustc-demangle-0.1.18.tar.gz) = 6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232
-SIZE (python/rust/crates/rustc-demangle-0.1.18.tar.gz) = 19913
-SHA256 (python/rust/crates/ryu-1.0.5.tar.gz) = 71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e
-SIZE (python/rust/crates/ryu-1.0.5.tar.gz) = 49570
-SHA256 (python/rust/crates/schannel-0.1.19.tar.gz) = 8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75
-SIZE (python/rust/crates/schannel-0.1.19.tar.gz) = 42755
-SHA256 (python/rust/crates/scopeguard-1.1.0.tar.gz) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
-SIZE (python/rust/crates/scopeguard-1.1.0.tar.gz) = 11470
-SHA256 (python/rust/crates/security-framework-0.4.4.tar.gz) = 64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535
-SIZE (python/rust/crates/security-framework-0.4.4.tar.gz) = 54841
-SHA256 (python/rust/crates/security-framework-sys-0.4.3.tar.gz) = 17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405
-SIZE (python/rust/crates/security-framework-sys-0.4.3.tar.gz) = 10508
-SHA256 (python/rust/crates/serde-1.0.117.tar.gz) = b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a
-SIZE (python/rust/crates/serde-1.0.117.tar.gz) = 74505
-SHA256 (python/rust/crates/serde-aux-0.6.1.tar.gz) = ae50f53d4b01e854319c1f5b854cd59471f054ea7e554988850d3f36ca1dc852
-SIZE (python/rust/crates/serde-aux-0.6.1.tar.gz) = 5701
-SHA256 (python/rust/crates/serde_derive-1.0.117.tar.gz) = cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e
-SIZE (python/rust/crates/serde_derive-1.0.117.tar.gz) = 50712
-SHA256 (python/rust/crates/serde_json-1.0.59.tar.gz) = dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95
-SIZE (python/rust/crates/serde_json-1.0.59.tar.gz) = 114956
-SHA256 (python/rust/crates/serde_repr-0.1.6.tar.gz) = 2dc6b7951b17b051f3210b063f12cc17320e2fe30ae05b0fe2a3abb068551c76
-SIZE (python/rust/crates/serde_repr-0.1.6.tar.gz) = 10181
-SHA256 (python/rust/crates/serde_tuple-0.5.0.tar.gz) = f4f025b91216f15a2a32aa39669329a475733590a015835d1783549a56d09427
-SIZE (python/rust/crates/serde_tuple-0.5.0.tar.gz) = 3817
-SHA256 (python/rust/crates/serde_tuple_macros-0.5.0.tar.gz) = 4076151d1a2b688e25aaf236997933c66e18b870d0369f8b248b8ab2be630d7e
-SIZE (python/rust/crates/serde_tuple_macros-0.5.0.tar.gz) = 2205
-SHA256 (python/rust/crates/serde_urlencoded-0.6.1.tar.gz) = 9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97
-SIZE (python/rust/crates/serde_urlencoded-0.6.1.tar.gz) = 12540
-SHA256 (python/rust/crates/sha1-0.6.0.tar.gz) = 2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d
-SIZE (python/rust/crates/sha1-0.6.0.tar.gz) = 9244
-SHA256 (python/rust/crates/slab-0.4.2.tar.gz) = c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8
-SIZE (python/rust/crates/slab-0.4.2.tar.gz) = 10136
-SHA256 (python/rust/crates/slog-2.5.2.tar.gz) = 1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99
-SIZE (python/rust/crates/slog-2.5.2.tar.gz) = 43204
-SHA256 (python/rust/crates/slog-async-2.5.0.tar.gz) = 51b3336ce47ce2f96673499fc07eb85e3472727b9a7a2959964b002c2ce8fbbb
-SIZE (python/rust/crates/slog-async-2.5.0.tar.gz) = 18033
-SHA256 (python/rust/crates/slog-envlogger-2.2.0.tar.gz) = 906a1a0bc43fed692df4b82a5e2fbfc3733db8dad8bb514ab27a4f23ad04f5c0
-SIZE (python/rust/crates/slog-envlogger-2.2.0.tar.gz) = 13240
-SHA256 (python/rust/crates/slog-scope-4.3.0.tar.gz) = 7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6
-SIZE (python/rust/crates/slog-scope-4.3.0.tar.gz) = 16986
-SHA256 (python/rust/crates/slog-stdlog-4.1.0.tar.gz) = 8228ab7302adbf4fcb37e66f3cda78003feb521e7fd9e3847ec117a7784d0f5a
-SIZE (python/rust/crates/slog-stdlog-4.1.0.tar.gz) = 14523
-SHA256 (python/rust/crates/slog-term-2.6.0.tar.gz) = bab1d807cf71129b05ce36914e1dbb6fbfbdecaf686301cb457f4fa967f9f5b6
-SIZE (python/rust/crates/slog-term-2.6.0.tar.gz) = 26304
-SHA256 (python/rust/crates/smallvec-1.4.2.tar.gz) = fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252
-SIZE (python/rust/crates/smallvec-1.4.2.tar.gz) = 26109
-SHA256 (python/rust/crates/socket2-0.3.15.tar.gz) = b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44
-SIZE (python/rust/crates/socket2-0.3.15.tar.gz) = 29282
-SHA256 (python/rust/crates/stable_deref_trait-1.2.0.tar.gz) = a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3
-SIZE (python/rust/crates/stable_deref_trait-1.2.0.tar.gz) = 8054
-SHA256 (python/rust/crates/static_assertions-1.1.0.tar.gz) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
-SIZE (python/rust/crates/static_assertions-1.1.0.tar.gz) = 18480
-SHA256 (python/rust/crates/subtle-2.3.0.tar.gz) = 343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd
-SIZE (python/rust/crates/subtle-2.3.0.tar.gz) = 11096
-SHA256 (python/rust/crates/syn-1.0.46.tar.gz) = 5ad5de3220ea04da322618ded2c42233d02baca219d6f160a3e9c87cda16c942
-SIZE (python/rust/crates/syn-1.0.46.tar.gz) = 225691
-SHA256 (python/rust/crates/synstructure-0.12.4.tar.gz) = b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701
-SIZE (python/rust/crates/synstructure-0.12.4.tar.gz) = 18105
-SHA256 (python/rust/crates/take_mut-0.2.2.tar.gz) = f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60
-SIZE (python/rust/crates/take_mut-0.2.2.tar.gz) = 4263
-SHA256 (python/rust/crates/tempfile-3.1.0.tar.gz) = 7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9
-SIZE (python/rust/crates/tempfile-3.1.0.tar.gz) = 25823
-SHA256 (python/rust/crates/term-0.6.1.tar.gz) = c0863a3345e70f61d613eab32ee046ccd1bcc5f9105fe402c61fcd0c13eeb8b5
-SIZE (python/rust/crates/term-0.6.1.tar.gz) = 37578
-SHA256 (python/rust/crates/thiserror-1.0.21.tar.gz) = 318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42
-SIZE (python/rust/crates/thiserror-1.0.21.tar.gz) = 16187
-SHA256 (python/rust/crates/thiserror-impl-1.0.21.tar.gz) = cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab
-SIZE (python/rust/crates/thiserror-impl-1.0.21.tar.gz) = 13199
-SHA256 (python/rust/crates/thread_local-1.0.1.tar.gz) = d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14
-SIZE (python/rust/crates/thread_local-1.0.1.tar.gz) = 12609
-SHA256 (python/rust/crates/time-0.1.44.tar.gz) = 6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255
-SIZE (python/rust/crates/time-0.1.44.tar.gz) = 28885
-SHA256 (python/rust/crates/tinystr-0.3.4.tar.gz) = 29738eedb4388d9ea620eeab9384884fc3f06f586a2eddb56bedc5885126c7c1
-SIZE (python/rust/crates/tinystr-0.3.4.tar.gz) = 19341
-SHA256 (python/rust/crates/tinyvec-0.3.4.tar.gz) = 238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117
-SIZE (python/rust/crates/tinyvec-0.3.4.tar.gz) = 17586
-SHA256 (python/rust/crates/tokio-0.2.22.tar.gz) = 5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd
-SIZE (python/rust/crates/tokio-0.2.22.tar.gz) = 400639
-SHA256 (python/rust/crates/tokio-socks-0.2.2.tar.gz) = 1997788a0e25e09300e44680ba1ef9d44d6f634a883641f80109e8b59c928daf
-SIZE (python/rust/crates/tokio-socks-0.2.2.tar.gz) = 16371
-SHA256 (python/rust/crates/tokio-tls-0.3.1.tar.gz) = 9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343
-SIZE (python/rust/crates/tokio-tls-0.3.1.tar.gz) = 22517
-SHA256 (python/rust/crates/tokio-util-0.3.1.tar.gz) = be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499
-SIZE (python/rust/crates/tokio-util-0.3.1.tar.gz) = 27233
-SHA256 (python/rust/crates/toml-0.5.7.tar.gz) = 75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645
-SIZE (python/rust/crates/toml-0.5.7.tar.gz) = 54372
-SHA256 (python/rust/crates/tower-service-0.3.0.tar.gz) = e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860
-SIZE (python/rust/crates/tower-service-0.3.0.tar.gz) = 5321
-SHA256 (python/rust/crates/tracing-0.1.21.tar.gz) = b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27
-SIZE (python/rust/crates/tracing-0.1.21.tar.gz) = 65404
-SHA256 (python/rust/crates/tracing-core-0.1.17.tar.gz) = f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f
-SIZE (python/rust/crates/tracing-core-0.1.17.tar.gz) = 47774
-SHA256 (python/rust/crates/try-lock-0.2.3.tar.gz) = 59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642
-SIZE (python/rust/crates/try-lock-0.2.3.tar.gz) = 4158
-SHA256 (python/rust/crates/type-map-0.3.0.tar.gz) = 9d2741b1474c327d95c1f1e3b0a2c3977c8e128409c572a33af2914e7d636717
-SIZE (python/rust/crates/type-map-0.3.0.tar.gz) = 3188
-SHA256 (python/rust/crates/typenum-1.12.0.tar.gz) = 373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33
-SIZE (python/rust/crates/typenum-1.12.0.tar.gz) = 36037
-SHA256 (python/rust/crates/unic-langid-0.8.0.tar.gz) = 24d81136159f779c35b10655f45210c71cd5ca5a45aadfe9840a61c7071735ed
-SIZE (python/rust/crates/unic-langid-0.8.0.tar.gz) = 4640
-SHA256 (python/rust/crates/unic-langid-impl-0.8.0.tar.gz) = c43c61e94492eb67f20facc7b025778a904de83d953d8fcb60dd9adfd6e2d0ea
-SIZE (python/rust/crates/unic-langid-impl-0.8.0.tar.gz) = 36947
-SHA256 (python/rust/crates/unic-langid-macros-0.8.0.tar.gz) = 49bd90791278634d57e3ed4a4073108e3f79bfb87ab6a7b8664ba097425703df
-SIZE (python/rust/crates/unic-langid-macros-0.8.0.tar.gz) = 2053
-SHA256 (python/rust/crates/unic-langid-macros-impl-0.8.0.tar.gz) = e0098f77bd754f8fb7850cdf4ab143aa821898c4ac6dc16bcb2aa3e62ce858d1
-SIZE (python/rust/crates/unic-langid-macros-impl-0.8.0.tar.gz) = 1447
-SHA256 (python/rust/crates/unicase-2.6.0.tar.gz) = 50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6
-SIZE (python/rust/crates/unicase-2.6.0.tar.gz) = 23478
-SHA256 (python/rust/crates/unicode-bidi-0.3.4.tar.gz) = 49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5
-SIZE (python/rust/crates/unicode-bidi-0.3.4.tar.gz) = 32228
-SHA256 (python/rust/crates/unicode-normalization-0.1.13.tar.gz) = 6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977
-SIZE (python/rust/crates/unicode-normalization-0.1.13.tar.gz) = 91691
-SHA256 (python/rust/crates/unicode-segmentation-1.6.0.tar.gz) = e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0
-SIZE (python/rust/crates/unicode-segmentation-1.6.0.tar.gz) = 90703
-SHA256 (python/rust/crates/unicode-xid-0.2.1.tar.gz) = f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564
-SIZE (python/rust/crates/unicode-xid-0.2.1.tar.gz) = 14392
-SHA256 (python/rust/crates/unindent-0.1.7.tar.gz) = f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7
-SIZE (python/rust/crates/unindent-0.1.7.tar.gz) = 8346
-SHA256 (python/rust/crates/url-2.1.1.tar.gz) = 829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb
-SIZE (python/rust/crates/url-2.1.1.tar.gz) = 70383
-SHA256 (python/rust/crates/utime-0.3.1.tar.gz) = 91baa0c65eabd12fcbdac8cc35ff16159cab95cae96d0222d6d0271db6193cef
-SIZE (python/rust/crates/utime-0.3.1.tar.gz) = 8311
-SHA256 (python/rust/crates/vcpkg-0.2.10.tar.gz) = 6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c
-SIZE (python/rust/crates/vcpkg-0.2.10.tar.gz) = 11504
-SHA256 (python/rust/crates/version_check-0.9.2.tar.gz) = b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed
-SIZE (python/rust/crates/version_check-0.9.2.tar.gz) = 11979
-SHA256 (python/rust/crates/want-0.3.0.tar.gz) = 1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0
-SIZE (python/rust/crates/want-0.3.0.tar.gz) = 6550
-SHA256 (python/rust/crates/wasi-0.9.0+wasi-snapshot-preview1.tar.gz) = cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519
-SIZE (python/rust/crates/wasi-0.9.0+wasi-snapshot-preview1.tar.gz) = 31521
-SHA256 (python/rust/crates/wasi-0.10.0+wasi-snapshot-preview1.tar.gz) = 1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f
-SIZE (python/rust/crates/wasi-0.10.0+wasi-snapshot-preview1.tar.gz) = 26964
-SHA256 (python/rust/crates/wasm-bindgen-0.2.68.tar.gz) = 1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42
-SIZE (python/rust/crates/wasm-bindgen-0.2.68.tar.gz) = 159094
-SHA256 (python/rust/crates/wasm-bindgen-backend-0.2.68.tar.gz) = f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68
-SIZE (python/rust/crates/wasm-bindgen-backend-0.2.68.tar.gz) = 23522
-SHA256 (python/rust/crates/wasm-bindgen-futures-0.4.18.tar.gz) = b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da
-SIZE (python/rust/crates/wasm-bindgen-futures-0.4.18.tar.gz) = 13690
-SHA256 (python/rust/crates/wasm-bindgen-macro-0.2.68.tar.gz) = 6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038
-SIZE (python/rust/crates/wasm-bindgen-macro-0.2.68.tar.gz) = 11630
-SHA256 (python/rust/crates/wasm-bindgen-macro-support-0.2.68.tar.gz) = f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe
-SIZE (python/rust/crates/wasm-bindgen-macro-support-0.2.68.tar.gz) = 17793
-SHA256 (python/rust/crates/wasm-bindgen-shared-0.2.68.tar.gz) = 1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307
-SIZE (python/rust/crates/wasm-bindgen-shared-0.2.68.tar.gz) = 6725
-SHA256 (python/rust/crates/web-sys-0.3.45.tar.gz) = 4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d
-SIZE (python/rust/crates/web-sys-0.3.45.tar.gz) = 630993
-SHA256 (python/rust/crates/which-3.1.1.tar.gz) = d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724
-SIZE (python/rust/crates/which-3.1.1.tar.gz) = 8071
-SHA256 (python/rust/crates/winapi-0.2.8.tar.gz) = 167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a
-SIZE (python/rust/crates/winapi-0.2.8.tar.gz) = 455145
-SHA256 (python/rust/crates/winapi-0.3.9.tar.gz) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
-SIZE (python/rust/crates/winapi-0.3.9.tar.gz) = 1200382
-SHA256 (python/rust/crates/winapi-build-0.1.1.tar.gz) = 2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc
-SIZE (python/rust/crates/winapi-build-0.1.1.tar.gz) = 669
-SHA256 (python/rust/crates/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
-SIZE (python/rust/crates/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = 2918815
-SHA256 (python/rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
-SIZE (python/rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 2947998
-SHA256 (python/rust/crates/winreg-0.6.2.tar.gz) = b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9
-SIZE (python/rust/crates/winreg-0.6.2.tar.gz) = 19338
-SHA256 (python/rust/crates/ws2_32-sys-0.2.1.tar.gz) = d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e
-SIZE (python/rust/crates/ws2_32-sys-0.2.1.tar.gz) = 4697
-SHA256 (python/rust/crates/zip-0.5.6.tar.gz) = 58287c28d78507f5f91f2a4cf1e8310e2c76fd4c6932f93ac60fd1ceb402db7d
-SIZE (python/rust/crates/zip-0.5.6.tar.gz) = 33064
-SHA256 (python/ankitects-anki-2.1.35_GH0.tar.gz) = 188c0756bd2acda0b5d675c2f8462b4bca32aed451e7ffa495e9de5c387aebd0
-SIZE (python/ankitects-anki-2.1.35_GH0.tar.gz) = 1496408
-SHA256 (python/ankitects-anki-core-i18n-fbda2ed_GH0.tar.gz) = d4cc9f878b8946b8c0a4a86935f947fc13044d837e014234b57e04fafdced602
-SIZE (python/ankitects-anki-core-i18n-fbda2ed_GH0.tar.gz) = 227281
-SHA256 (python/ankitects-anki-desktop-ftl-f56e959_GH0.tar.gz) = 3a2b5223737e7063b9d52ec90ee8598358322493745a8d254fd3c2aa464c647a
-SIZE (python/ankitects-anki-desktop-ftl-f56e959_GH0.tar.gz) = 36793
-SHA256 (python/ankitects-anki-desktop-i18n-a93ccef_GH0.tar.gz) = 1cebef1595b08a480e4c64b15a5a765056be10c1fdfd658d1dfcfdc9d04af74d
-SIZE (python/ankitects-anki-desktop-i18n-a93ccef_GH0.tar.gz) = 1391777
-SHA256 (python/ankitects-rust-coarsetime-f9e2c86216f0f4803bc75404828318fc206dab29_GH0.tar.gz) = e79be82d7c2f2d10856392697187f5c4a7b0858ce7046b0a2f969c32b735d81e
-SIZE (python/ankitects-rust-coarsetime-f9e2c86216f0f4803bc75404828318fc206dab29_GH0.tar.gz) = 7110
-SHA256 (python/ankitects-fluent-rs-f61c5e10a53161ef5261f3c87b62047f12e4aa74_GH0.tar.gz) = 79e6574fb1611c5e5f7b159014f04bdb32374ffb20be03f36462a98e79deae04
-SIZE (python/ankitects-fluent-rs-f61c5e10a53161ef5261f3c87b62047f12e4aa74_GH0.tar.gz) = 112354
-SHA256 (python/ankitects-hyper-timeout-664b6f9c387f6a7d75d1609a65c02554e8c55bc7_GH0.tar.gz) = a31fb414802ecc5b52fc953d8d44e39084ad245bd4da3e8b9bc4e98f426fcb4d
-SIZE (python/ankitects-hyper-timeout-664b6f9c387f6a7d75d1609a65c02554e8c55bc7_GH0.tar.gz) = 8461
-SHA256 (python/ankitects-reqwest-57665e2c2a39db85723ba860f1b570a608bb73f9_GH0.tar.gz) = 1402e2f4c65819f644d6c5a15fccd6eb6ca3a9b12b4157d3d04999a10dbbaf7a
-SIZE (python/ankitects-reqwest-57665e2c2a39db85723ba860f1b570a608bb73f9_GH0.tar.gz) = 219588
-SHA256 (python/ankitects-tokio-io-timeout-96e1358555c49905de89170f2b1102a7d8b6c4c2_GH0.tar.gz) = a7490d924a3850a1518757a0eba225cc27784b7a79f7f525d935c92e206100e9
-SIZE (python/ankitects-tokio-io-timeout-96e1358555c49905de89170f2b1102a7d8b6c4c2_GH0.tar.gz) = 8152
+TIMESTAMP = 1627628162
+SHA256 (python/anki-yarn-cache-2.1.44.tar.gz) = 31fd744d235897fe9a019081a613da7594315c8974ed2e3bc5709c957456fff8
+SIZE (python/anki-yarn-cache-2.1.44.tar.gz) = 137877372
+SHA256 (python/rust/crates/addr2line-0.15.2.crate) = e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a
+SIZE (python/rust/crates/addr2line-0.15.2.crate) = 32966
+SHA256 (python/rust/crates/adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe
+SIZE (python/rust/crates/adler-1.0.2.crate) = 12778
+SHA256 (python/rust/crates/ahash-0.4.7.crate) = 739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e
+SIZE (python/rust/crates/ahash-0.4.7.crate) = 51474
+SHA256 (python/rust/crates/aho-corasick-0.7.18.crate) = 1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f
+SIZE (python/rust/crates/aho-corasick-0.7.18.crate) = 112923
+SHA256 (python/rust/crates/ammonia-3.1.2.crate) = 2e445c26125ff80316eaea16e812d717b147b82a68682bd4730f74d4845c8b35
+SIZE (python/rust/crates/ammonia-3.1.2.crate) = 39704
+SHA256 (python/rust/crates/anyhow-1.0.42.crate) = 595d3cfa7a60d4555cb5067b99f07142a08ea778de5cf993f7b75c7d8fabc486
+SIZE (python/rust/crates/anyhow-1.0.42.crate) = 34827
+SHA256 (python/rust/crates/arc-swap-1.3.0.crate) = e906254e445520903e7fc9da4f709886c84ae4bc4ddaf0e093188d66df4dc820
+SIZE (python/rust/crates/arc-swap-1.3.0.crate) = 63680
+SHA256 (python/rust/crates/arrayref-0.3.6.crate) = a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544
+SIZE (python/rust/crates/arrayref-0.3.6.crate) = 10035
+SHA256 (python/rust/crates/arrayvec-0.4.12.crate) = cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9
+SIZE (python/rust/crates/arrayvec-0.4.12.crate) = 26551
+SHA256 (python/rust/crates/arrayvec-0.5.2.crate) = 23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b
+SIZE (python/rust/crates/arrayvec-0.5.2.crate) = 27838
+SHA256 (python/rust/crates/askama-0.10.5.crate) = d298738b6e47e1034e560e5afe63aa488fea34e25ec11b855a76f0d7b8e73134
+SIZE (python/rust/crates/askama-0.10.5.crate) = 7994
+SHA256 (python/rust/crates/askama_derive-0.10.5.crate) = ca2925c4c290382f9d2fa3d1c1b6a63fa1427099721ecca4749b154cc9c25522
+SIZE (python/rust/crates/askama_derive-0.10.5.crate) = 6927
+SHA256 (python/rust/crates/askama_escape-0.10.1.crate) = 90c108c1a94380c89d2215d0ac54ce09796823cca0fd91b299cfff3b33e346fb
+SIZE (python/rust/crates/askama_escape-0.10.1.crate) = 8535
+SHA256 (python/rust/crates/askama_shared-0.11.1.crate) = 2582b77e0f3c506ec4838a25fa8a5f97b9bed72bb6d3d272ea1c031d8bd373bc
+SIZE (python/rust/crates/askama_shared-0.11.1.crate) = 30554
+SHA256 (python/rust/crates/async-compression-0.3.8.crate) = 5443ccbb270374a2b1055fc72da40e1f237809cd6bb0e97e66d264cd138473a6
+SIZE (python/rust/crates/async-compression-0.3.8.crate) = 57977
+SHA256 (python/rust/crates/async-trait-0.1.50.crate) = 0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722
+SIZE (python/rust/crates/async-trait-0.1.50.crate) = 25321
+SHA256 (python/rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (python/rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (python/rust/crates/autocfg-1.0.1.crate) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
+SIZE (python/rust/crates/autocfg-1.0.1.crate) = 12908
+SHA256 (python/rust/crates/backtrace-0.3.60.crate) = b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282
+SIZE (python/rust/crates/backtrace-0.3.60.crate) = 70983
+SHA256 (python/rust/crates/base64-0.12.3.crate) = 3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff
+SIZE (python/rust/crates/base64-0.12.3.crate) = 57545
+SHA256 (python/rust/crates/base64-0.13.0.crate) = 904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd
+SIZE (python/rust/crates/base64-0.13.0.crate) = 62070
+SHA256 (python/rust/crates/bitflags-1.2.1.crate) = cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693
+SIZE (python/rust/crates/bitflags-1.2.1.crate) = 16745
+SHA256 (python/rust/crates/bitvec-0.19.5.crate) = 8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321
+SIZE (python/rust/crates/bitvec-0.19.5.crate) = 148200
+SHA256 (python/rust/crates/blake3-0.3.8.crate) = b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3
+SIZE (python/rust/crates/blake3-0.3.8.crate) = 154058
+SHA256 (python/rust/crates/bumpalo-3.7.0.crate) = 9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631
+SIZE (python/rust/crates/bumpalo-3.7.0.crate) = 134261
+SHA256 (python/rust/crates/byteorder-1.4.3.crate) = 14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610
+SIZE (python/rust/crates/byteorder-1.4.3.crate) = 22512
+SHA256 (python/rust/crates/bytes-0.4.12.crate) = 206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c
+SIZE (python/rust/crates/bytes-0.4.12.crate) = 46361
+SHA256 (python/rust/crates/bytes-0.5.6.crate) = 0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38
+SIZE (python/rust/crates/bytes-0.5.6.crate) = 46291
+SHA256 (python/rust/crates/bytes-1.0.1.crate) = b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040
+SIZE (python/rust/crates/bytes-1.0.1.crate) = 48142
+SHA256 (python/rust/crates/cc-1.0.69.crate) = e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2
+SIZE (python/rust/crates/cc-1.0.69.crate) = 56044
+SHA256 (python/rust/crates/cfg-if-0.1.10.crate) = 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822
+SIZE (python/rust/crates/cfg-if-0.1.10.crate) = 7933
+SHA256 (python/rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (python/rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (python/rust/crates/chrono-0.4.19.crate) = 670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73
+SIZE (python/rust/crates/chrono-0.4.19.crate) = 155663
+SHA256 (python/rust/crates/coarsetime-0.1.19.crate) = 2918e2ffa91a49dabbba4965fe38a37a1ba0b6953a29e32cc250a8d59cd42232
+SIZE (python/rust/crates/coarsetime-0.1.19.crate) = 7927
+SHA256 (python/rust/crates/constant_time_eq-0.1.5.crate) = 245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc
+SIZE (python/rust/crates/constant_time_eq-0.1.5.crate) = 4936
+SHA256 (python/rust/crates/core-foundation-0.9.1.crate) = 0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62
+SIZE (python/rust/crates/core-foundation-0.9.1.crate) = 25985
+SHA256 (python/rust/crates/core-foundation-sys-0.8.2.crate) = ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b
+SIZE (python/rust/crates/core-foundation-sys-0.8.2.crate) = 17461
+SHA256 (python/rust/crates/crc32fast-1.2.1.crate) = 81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a
+SIZE (python/rust/crates/crc32fast-1.2.1.crate) = 38172
+SHA256 (python/rust/crates/crossbeam-channel-0.5.1.crate) = 06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4
+SIZE (python/rust/crates/crossbeam-channel-0.5.1.crate) = 86919
+SHA256 (python/rust/crates/crossbeam-utils-0.8.5.crate) = d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db
+SIZE (python/rust/crates/crossbeam-utils-0.8.5.crate) = 38414
+SHA256 (python/rust/crates/crypto-mac-0.8.0.crate) = b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab
+SIZE (python/rust/crates/crypto-mac-0.8.0.crate) = 9115
+SHA256 (python/rust/crates/ctor-0.1.20.crate) = 5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d
+SIZE (python/rust/crates/ctor-0.1.20.crate) = 9328
+SHA256 (python/rust/crates/derivative-2.2.0.crate) = fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b
+SIZE (python/rust/crates/derivative-2.2.0.crate) = 48076
+SHA256 (python/rust/crates/digest-0.9.0.crate) = d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
+SIZE (python/rust/crates/digest-0.9.0.crate) = 13247
+SHA256 (python/rust/crates/dirs-next-2.0.0.crate) = b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1
+SIZE (python/rust/crates/dirs-next-2.0.0.crate) = 11689
+SHA256 (python/rust/crates/dirs-sys-next-0.1.2.crate) = 4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d
+SIZE (python/rust/crates/dirs-sys-next-0.1.2.crate) = 10681
+SHA256 (python/rust/crates/dtoa-0.4.8.crate) = 56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0
+SIZE (python/rust/crates/dtoa-0.4.8.crate) = 16175
+SHA256 (python/rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (python/rust/crates/either-1.6.1.crate) = 13641
+SHA256 (python/rust/crates/encoding_rs-0.8.28.crate) = 80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065
+SIZE (python/rust/crates/encoding_rs-0.8.28.crate) = 1368577
+SHA256 (python/rust/crates/env_logger-0.8.4.crate) = a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3
+SIZE (python/rust/crates/env_logger-0.8.4.crate) = 33342
+SHA256 (python/rust/crates/failure-0.1.8.crate) = d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86
+SIZE (python/rust/crates/failure-0.1.8.crate) = 37582
+SHA256 (python/rust/crates/failure_derive-0.1.8.crate) = aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4
+SIZE (python/rust/crates/failure_derive-0.1.8.crate) = 4950
+SHA256 (python/rust/crates/fallible-iterator-0.2.0.crate) = 4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7
+SIZE (python/rust/crates/fallible-iterator-0.2.0.crate) = 18509
+SHA256 (python/rust/crates/fallible-streaming-iterator-0.1.9.crate) = 7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a
+SIZE (python/rust/crates/fallible-streaming-iterator-0.1.9.crate) = 9249
+SHA256 (python/rust/crates/fixedbitset-0.2.0.crate) = 37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d
+SIZE (python/rust/crates/fixedbitset-0.2.0.crate) = 13597
+SHA256 (python/rust/crates/flate2-1.0.20.crate) = cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0
+SIZE (python/rust/crates/flate2-1.0.20.crate) = 74036
+SHA256 (python/rust/crates/fluent-0.13.1.crate) = ef9e54ec7b674ae3477d948ae790e90ae24d54fb31c2e7173252978d9b09bdfa
+SIZE (python/rust/crates/fluent-0.13.1.crate) = 3982
+SHA256 (python/rust/crates/fluent-bundle-0.13.2.crate) = 092ebd50cd3f8a6d664bf156e3550d2f7232fbe446da6707d727cca53f707ce2
+SIZE (python/rust/crates/fluent-bundle-0.13.2.crate) = 24130
+SHA256 (python/rust/crates/fluent-langneg-0.13.0.crate) = 2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94
+SIZE (python/rust/crates/fluent-langneg-0.13.0.crate) = 11723
+SHA256 (python/rust/crates/fluent-syntax-0.10.3.crate) = 784f660373ea898f712a7e67b43f35bf79608d46112747c29767d087611d716b
+SIZE (python/rust/crates/fluent-syntax-0.10.3.crate) = 22083
+SHA256 (python/rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (python/rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (python/rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+SIZE (python/rust/crates/foreign-types-0.3.2.crate) = 7504
+SHA256 (python/rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+SIZE (python/rust/crates/foreign-types-shared-0.1.1.crate) = 5672
+SHA256 (python/rust/crates/form_urlencoded-1.0.1.crate) = 5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191
+SIZE (python/rust/crates/form_urlencoded-1.0.1.crate) = 8773
+SHA256 (python/rust/crates/fuchsia-zircon-0.3.3.crate) = 2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82
+SIZE (python/rust/crates/fuchsia-zircon-0.3.3.crate) = 22565
+SHA256 (python/rust/crates/fuchsia-zircon-sys-0.3.3.crate) = 3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7
+SIZE (python/rust/crates/fuchsia-zircon-sys-0.3.3.crate) = 7191
+SHA256 (python/rust/crates/funty-1.1.0.crate) = fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7
+SIZE (python/rust/crates/funty-1.1.0.crate) = 11631
+SHA256 (python/rust/crates/futf-0.1.4.crate) = 7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b
+SIZE (python/rust/crates/futf-0.1.4.crate) = 11341
+SHA256 (python/rust/crates/futures-0.3.15.crate) = 0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27
+SIZE (python/rust/crates/futures-0.3.15.crate) = 46425
+SHA256 (python/rust/crates/futures-channel-0.3.15.crate) = e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2
+SIZE (python/rust/crates/futures-channel-0.3.15.crate) = 31867
+SHA256 (python/rust/crates/futures-core-0.3.15.crate) = 0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1
+SIZE (python/rust/crates/futures-core-0.3.15.crate) = 14514
+SHA256 (python/rust/crates/futures-executor-0.3.15.crate) = badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79
+SIZE (python/rust/crates/futures-executor-0.3.15.crate) = 17166
+SHA256 (python/rust/crates/futures-io-0.3.15.crate) = acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1
+SIZE (python/rust/crates/futures-io-0.3.15.crate) = 9058
+SHA256 (python/rust/crates/futures-macro-0.3.15.crate) = a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121
+SIZE (python/rust/crates/futures-macro-0.3.15.crate) = 10872
+SHA256 (python/rust/crates/futures-sink-0.3.15.crate) = a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282
+SIZE (python/rust/crates/futures-sink-0.3.15.crate) = 7672
+SHA256 (python/rust/crates/futures-task-0.3.15.crate) = 8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae
+SIZE (python/rust/crates/futures-task-0.3.15.crate) = 11811
+SHA256 (python/rust/crates/futures-util-0.3.15.crate) = feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967
+SIZE (python/rust/crates/futures-util-0.3.15.crate) = 141962
+SHA256 (python/rust/crates/generic-array-0.14.4.crate) = 501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817
+SIZE (python/rust/crates/generic-array-0.14.4.crate) = 28916
+SHA256 (python/rust/crates/getopts-0.2.21.crate) = 14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5
+SIZE (python/rust/crates/getopts-0.2.21.crate) = 18457
+SHA256 (python/rust/crates/getrandom-0.1.16.crate) = 8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce
+SIZE (python/rust/crates/getrandom-0.1.16.crate) = 25077
+SHA256 (python/rust/crates/getrandom-0.2.3.crate) = 7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753
+SIZE (python/rust/crates/getrandom-0.2.3.crate) = 26261
+SHA256 (python/rust/crates/ghost-0.1.2.crate) = 1a5bcf1bbeab73aa4cf2fde60a846858dc036163c7c33bec309f8d17de785479
+SIZE (python/rust/crates/ghost-0.1.2.crate) = 12777
+SHA256 (python/rust/crates/gimli-0.24.0.crate) = 0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189
+SIZE (python/rust/crates/gimli-0.24.0.crate) = 703534
+SHA256 (python/rust/crates/h2-0.2.7.crate) = 5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535
+SIZE (python/rust/crates/h2-0.2.7.crate) = 156989
+SHA256 (python/rust/crates/hashbrown-0.9.1.crate) = d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04
+SIZE (python/rust/crates/hashbrown-0.9.1.crate) = 77734
+SHA256 (python/rust/crates/hashbrown-0.11.2.crate) = ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e
+SIZE (python/rust/crates/hashbrown-0.11.2.crate) = 85713
+SHA256 (python/rust/crates/hashlink-0.6.0.crate) = d99cf782f0dc4372d26846bec3de7804ceb5df083c2d4462c0b8d2330e894fa8
+SIZE (python/rust/crates/hashlink-0.6.0.crate) = 24952
+SHA256 (python/rust/crates/heck-0.3.3.crate) = 6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c
+SIZE (python/rust/crates/heck-0.3.3.crate) = 10260
+SHA256 (python/rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (python/rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (python/rust/crates/hex-0.4.3.crate) = 7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70
+SIZE (python/rust/crates/hex-0.4.3.crate) = 13299
+SHA256 (python/rust/crates/html5ever-0.25.1.crate) = aafcf38a1a36118242d29b92e1b08ef84e67e4a5ed06e0a80be20e6a32bfed6b
+SIZE (python/rust/crates/html5ever-0.25.1.crate) = 73165
+SHA256 (python/rust/crates/htmlescape-0.3.1.crate) = e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163
+SIZE (python/rust/crates/htmlescape-0.3.1.crate) = 53226
+SHA256 (python/rust/crates/http-0.2.4.crate) = 527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11
+SIZE (python/rust/crates/http-0.2.4.crate) = 105489
+SHA256 (python/rust/crates/http-body-0.3.1.crate) = 13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b
+SIZE (python/rust/crates/http-body-0.3.1.crate) = 5394
+SHA256 (python/rust/crates/httparse-1.4.1.crate) = f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68
+SIZE (python/rust/crates/httparse-1.4.1.crate) = 25592
+SHA256 (python/rust/crates/httpdate-0.3.2.crate) = 494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47
+SIZE (python/rust/crates/httpdate-0.3.2.crate) = 10768
+SHA256 (python/rust/crates/humansize-1.1.1.crate) = 02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026
+SIZE (python/rust/crates/humansize-1.1.1.crate) = 9131
+SHA256 (python/rust/crates/humantime-2.1.0.crate) = 9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4
+SIZE (python/rust/crates/humantime-2.1.0.crate) = 16749
+SHA256 (python/rust/crates/hyper-0.13.10.crate) = 8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb
+SIZE (python/rust/crates/hyper-0.13.10.crate) = 141981
+SHA256 (python/rust/crates/hyper-rustls-0.21.0.crate) = 37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6
+SIZE (python/rust/crates/hyper-rustls-0.21.0.crate) = 27489
+SHA256 (python/rust/crates/hyper-tls-0.4.3.crate) = d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed
+SIZE (python/rust/crates/hyper-tls-0.4.3.crate) = 14195
+SHA256 (python/rust/crates/idna-0.2.3.crate) = 418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8
+SIZE (python/rust/crates/idna-0.2.3.crate) = 271023
+SHA256 (python/rust/crates/indexmap-1.7.0.crate) = bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5
+SIZE (python/rust/crates/indexmap-1.7.0.crate) = 50363
+SHA256 (python/rust/crates/indoc-0.3.6.crate) = 47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8
+SIZE (python/rust/crates/indoc-0.3.6.crate) = 9663
+SHA256 (python/rust/crates/indoc-impl-0.3.6.crate) = ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0
+SIZE (python/rust/crates/indoc-impl-0.3.6.crate) = 7933
+SHA256 (python/rust/crates/instant-0.1.10.crate) = bee0328b1209d157ef001c94dd85b4f8f64139adb0eac2659f4b08382b2f474d
+SIZE (python/rust/crates/instant-0.1.10.crate) = 5218
+SHA256 (python/rust/crates/intl-memoizer-0.5.1.crate) = c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f
+SIZE (python/rust/crates/intl-memoizer-0.5.1.crate) = 8292
+SHA256 (python/rust/crates/intl_pluralrules-7.0.1.crate) = b18f988384267d7066cc2be425e6faf352900652c046b6971d2e228d3b1c5ecf
+SIZE (python/rust/crates/intl_pluralrules-7.0.1.crate) = 9263
+SHA256 (python/rust/crates/inventory-0.1.10.crate) = 0f0f7efb804ec95e33db9ad49e4252f049e37e8b0a4652e3cd61f7999f2eff7f
+SIZE (python/rust/crates/inventory-0.1.10.crate) = 11572
+SHA256 (python/rust/crates/inventory-impl-0.1.10.crate) = 75c094e94816723ab936484666968f5b58060492e880f3c8d00489a1e244fa51
+SIZE (python/rust/crates/inventory-impl-0.1.10.crate) = 6228
+SHA256 (python/rust/crates/iovec-0.1.4.crate) = b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e
+SIZE (python/rust/crates/iovec-0.1.4.crate) = 8720
+SHA256 (python/rust/crates/ipnet-2.3.1.crate) = 68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9
+SIZE (python/rust/crates/ipnet-2.3.1.crate) = 24932
+SHA256 (python/rust/crates/itertools-0.9.0.crate) = 284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b
+SIZE (python/rust/crates/itertools-0.9.0.crate) = 96429
+SHA256 (python/rust/crates/itoa-0.4.7.crate) = dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736
+SIZE (python/rust/crates/itoa-0.4.7.crate) = 12099
+SHA256 (python/rust/crates/js-sys-0.3.51.crate) = 83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062
+SIZE (python/rust/crates/js-sys-0.3.51.crate) = 67124
+SHA256 (python/rust/crates/kernel32-sys-0.2.2.crate) = 7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d
+SIZE (python/rust/crates/kernel32-sys-0.2.2.crate) = 24537
+SHA256 (python/rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (python/rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (python/rust/crates/lexical-core-0.7.6.crate) = 6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe
+SIZE (python/rust/crates/lexical-core-0.7.6.crate) = 494385
+SHA256 (python/rust/crates/libc-0.2.98.crate) = 320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790
+SIZE (python/rust/crates/libc-0.2.98.crate) = 522087
+SHA256 (python/rust/crates/libsqlite3-sys-0.20.1.crate) = 64d31059f22935e6c31830db5249ba2b7ecd54fd73a9909286f0a67aa55c2fbd
+SIZE (python/rust/crates/libsqlite3-sys-0.20.1.crate) = 2306064
+SHA256 (python/rust/crates/lock_api-0.4.4.crate) = 0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb
+SIZE (python/rust/crates/lock_api-0.4.4.crate) = 20356
+SHA256 (python/rust/crates/log-0.4.14.crate) = 51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710
+SIZE (python/rust/crates/log-0.4.14.crate) = 34582
+SHA256 (python/rust/crates/mac-0.1.1.crate) = c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4
+SIZE (python/rust/crates/mac-0.1.1.crate) = 4838
+SHA256 (python/rust/crates/maplit-1.0.2.crate) = 3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d
+SIZE (python/rust/crates/maplit-1.0.2.crate) = 8871
+SHA256 (python/rust/crates/markup5ever-0.10.1.crate) = a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd
+SIZE (python/rust/crates/markup5ever-0.10.1.crate) = 34668
+SHA256 (python/rust/crates/markup5ever_rcdom-0.1.0.crate) = f015da43bcd8d4f144559a3423f4591d69b8ce0652c905374da7205df336ae2b
+SIZE (python/rust/crates/markup5ever_rcdom-0.1.0.crate) = 25165
+SHA256 (python/rust/crates/matches-0.1.8.crate) = 7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08
+SIZE (python/rust/crates/matches-0.1.8.crate) = 2216
+SHA256 (python/rust/crates/memchr-2.4.0.crate) = b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc
+SIZE (python/rust/crates/memchr-2.4.0.crate) = 63392
+SHA256 (python/rust/crates/mime-0.3.16.crate) = 2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d
+SIZE (python/rust/crates/mime-0.3.16.crate) = 15206
+SHA256 (python/rust/crates/mime_guess-2.0.3.crate) = 2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212
+SIZE (python/rust/crates/mime_guess-2.0.3.crate) = 27437
+SHA256 (python/rust/crates/miniz_oxide-0.4.4.crate) = a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b
+SIZE (python/rust/crates/miniz_oxide-0.4.4.crate) = 49938
+SHA256 (python/rust/crates/mio-0.6.23.crate) = 4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4
+SIZE (python/rust/crates/mio-0.6.23.crate) = 103554
+SHA256 (python/rust/crates/miow-0.2.2.crate) = ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d
+SIZE (python/rust/crates/miow-0.2.2.crate) = 22044
+SHA256 (python/rust/crates/multimap-0.8.3.crate) = e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a
+SIZE (python/rust/crates/multimap-0.8.3.crate) = 13518
+SHA256 (python/rust/crates/native-tls-0.2.7.crate) = b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4
+SIZE (python/rust/crates/native-tls-0.2.7.crate) = 24958
+SHA256 (python/rust/crates/net2-0.2.37.crate) = 391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae
+SIZE (python/rust/crates/net2-0.2.37.crate) = 21311
+SHA256 (python/rust/crates/new_debug_unreachable-1.0.4.crate) = e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54
+SIZE (python/rust/crates/new_debug_unreachable-1.0.4.crate) = 2561
+SHA256 (python/rust/crates/nodrop-0.1.14.crate) = 72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb
+SIZE (python/rust/crates/nodrop-0.1.14.crate) = 7667
+SHA256 (python/rust/crates/nom-6.1.2.crate) = e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2
+SIZE (python/rust/crates/nom-6.1.2.crate) = 147539
+SHA256 (python/rust/crates/num-format-0.4.0.crate) = bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465
+SIZE (python/rust/crates/num-format-0.4.0.crate) = 59791
+SHA256 (python/rust/crates/num-integer-0.1.44.crate) = d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db
+SIZE (python/rust/crates/num-integer-0.1.44.crate) = 22216
+SHA256 (python/rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290
+SIZE (python/rust/crates/num-traits-0.2.14.crate) = 45476
+SHA256 (python/rust/crates/num_cpus-1.13.0.crate) = 05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3
+SIZE (python/rust/crates/num_cpus-1.13.0.crate) = 14704
+SHA256 (python/rust/crates/num_enum-0.5.2.crate) = e5adf0198d427ee515335639f275e806ca01acf9f07d7cf14bb36a10532a6169
+SIZE (python/rust/crates/num_enum-0.5.2.crate) = 10479
+SHA256 (python/rust/crates/num_enum_derive-0.5.2.crate) = b1def5a3f69d4707d8a040b12785b98029a39e8c610ae685c7f6265669767482
+SIZE (python/rust/crates/num_enum_derive-0.5.2.crate) = 7670
+SHA256 (python/rust/crates/object-0.25.3.crate) = a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7
+SIZE (python/rust/crates/object-0.25.3.crate) = 230711
+SHA256 (python/rust/crates/once_cell-1.8.0.crate) = 692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56
+SIZE (python/rust/crates/once_cell-1.8.0.crate) = 28925
+SHA256 (python/rust/crates/openssl-0.10.35.crate) = 549430950c79ae24e6d02e0b7404534ecf311d94cc9f861e9e4020187d13d885
+SIZE (python/rust/crates/openssl-0.10.35.crate) = 204462
+SHA256 (python/rust/crates/openssl-probe-0.1.4.crate) = 28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a
+SIZE (python/rust/crates/openssl-probe-0.1.4.crate) = 7066
+SHA256 (python/rust/crates/openssl-sys-0.9.65.crate) = 7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d
+SIZE (python/rust/crates/openssl-sys-0.9.65.crate) = 54405
+SHA256 (python/rust/crates/parking_lot-0.11.1.crate) = 6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb
+SIZE (python/rust/crates/parking_lot-0.11.1.crate) = 39854
+SHA256 (python/rust/crates/parking_lot_core-0.8.3.crate) = fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018
+SIZE (python/rust/crates/parking_lot_core-0.8.3.crate) = 32147
+SHA256 (python/rust/crates/paste-0.1.18.crate) = 45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880
+SIZE (python/rust/crates/paste-0.1.18.crate) = 12259
+SHA256 (python/rust/crates/paste-impl-0.1.18.crate) = d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6
+SIZE (python/rust/crates/paste-impl-0.1.18.crate) = 9451
+SHA256 (python/rust/crates/percent-encoding-2.1.0.crate) = d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
+SIZE (python/rust/crates/percent-encoding-2.1.0.crate) = 9748
+SHA256 (python/rust/crates/petgraph-0.5.1.crate) = 467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7
+SIZE (python/rust/crates/petgraph-0.5.1.crate) = 147173
+SHA256 (python/rust/crates/phf-0.8.0.crate) = 3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12
+SIZE (python/rust/crates/phf-0.8.0.crate) = 3902
+SHA256 (python/rust/crates/phf_codegen-0.8.0.crate) = cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815
+SIZE (python/rust/crates/phf_codegen-0.8.0.crate) = 3192
+SHA256 (python/rust/crates/phf_generator-0.8.0.crate) = 17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526
+SIZE (python/rust/crates/phf_generator-0.8.0.crate) = 7604
+SHA256 (python/rust/crates/phf_shared-0.8.0.crate) = c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7
+SIZE (python/rust/crates/phf_shared-0.8.0.crate) = 2860
+SHA256 (python/rust/crates/pin-project-1.0.8.crate) = 576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08
+SIZE (python/rust/crates/pin-project-1.0.8.crate) = 54991
+SHA256 (python/rust/crates/pin-project-internal-1.0.8.crate) = 6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389
+SIZE (python/rust/crates/pin-project-internal-1.0.8.crate) = 27941
+SHA256 (python/rust/crates/pin-project-lite-0.1.12.crate) = 257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777
+SIZE (python/rust/crates/pin-project-lite-0.1.12.crate) = 16854
+SHA256 (python/rust/crates/pin-project-lite-0.2.7.crate) = 8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443
+SIZE (python/rust/crates/pin-project-lite-0.2.7.crate) = 27212
+SHA256 (python/rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (python/rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (python/rust/crates/pkg-config-0.3.19.crate) = 3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c
+SIZE (python/rust/crates/pkg-config-0.3.19.crate) = 15451
+SHA256 (python/rust/crates/ppv-lite86-0.2.10.crate) = ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857
+SIZE (python/rust/crates/ppv-lite86-0.2.10.crate) = 20915
+SHA256 (python/rust/crates/precomputed-hash-0.1.1.crate) = 925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c
+SIZE (python/rust/crates/precomputed-hash-0.1.1.crate) = 1640
+SHA256 (python/rust/crates/proc-macro-crate-1.0.0.crate) = 41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92
+SIZE (python/rust/crates/proc-macro-crate-1.0.0.crate) = 8442
+SHA256 (python/rust/crates/proc-macro-hack-0.5.19.crate) = dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5
+SIZE (python/rust/crates/proc-macro-hack-0.5.19.crate) = 15556
+SHA256 (python/rust/crates/proc-macro-nested-0.1.6.crate) = eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a
+SIZE (python/rust/crates/proc-macro-nested-0.1.6.crate) = 6498
+SHA256 (python/rust/crates/proc-macro2-1.0.27.crate) = f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038
+SIZE (python/rust/crates/proc-macro2-1.0.27.crate) = 38625
+SHA256 (python/rust/crates/prost-0.7.0.crate) = 9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2
+SIZE (python/rust/crates/prost-0.7.0.crate) = 24775
+SHA256 (python/rust/crates/prost-build-0.7.0.crate) = 32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3
+SIZE (python/rust/crates/prost-build-0.7.0.crate) = 8220115
+SHA256 (python/rust/crates/prost-derive-0.7.0.crate) = 169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4
+SIZE (python/rust/crates/prost-derive-0.7.0.crate) = 15218
+SHA256 (python/rust/crates/prost-types-0.7.0.crate) = b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb
+SIZE (python/rust/crates/prost-types-0.7.0.crate) = 25694
+SHA256 (python/rust/crates/pulldown-cmark-0.8.0.crate) = ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8
+SIZE (python/rust/crates/pulldown-cmark-0.8.0.crate) = 106330
+SHA256 (python/rust/crates/pyo3-0.13.2.crate) = 4837b8e8e18a102c23f79d1e9a110b597ea3b684c95e874eb1ad88f8683109c3
+SIZE (python/rust/crates/pyo3-0.13.2.crate) = 281372
+SHA256 (python/rust/crates/pyo3-macros-0.13.2.crate) = a47f2c300ceec3e58064fd5f8f5b61230f2ffd64bde4970c81fdd0563a2db1bb
+SIZE (python/rust/crates/pyo3-macros-0.13.2.crate) = 5434
+SHA256 (python/rust/crates/pyo3-macros-backend-0.13.2.crate) = 87b097e5d84fcbe3e167f400fbedd657820a375b034c78bd852050749a575d66
+SIZE (python/rust/crates/pyo3-macros-backend-0.13.2.crate) = 33106
+SHA256 (python/rust/crates/quote-1.0.9.crate) = c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7
+SIZE (python/rust/crates/quote-1.0.9.crate) = 25042
+SHA256 (python/rust/crates/radium-0.5.3.crate) = 941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8
+SIZE (python/rust/crates/radium-0.5.3.crate) = 7588
+SHA256 (python/rust/crates/rand-0.7.3.crate) = 6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03
+SIZE (python/rust/crates/rand-0.7.3.crate) = 112246
+SHA256 (python/rust/crates/rand-0.8.4.crate) = 2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8
+SIZE (python/rust/crates/rand-0.8.4.crate) = 87406
+SHA256 (python/rust/crates/rand_chacha-0.2.2.crate) = f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402
+SIZE (python/rust/crates/rand_chacha-0.2.2.crate) = 13267
+SHA256 (python/rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (python/rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (python/rust/crates/rand_core-0.5.1.crate) = 90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19
+SIZE (python/rust/crates/rand_core-0.5.1.crate) = 21116
+SHA256 (python/rust/crates/rand_core-0.6.3.crate) = d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7
+SIZE (python/rust/crates/rand_core-0.6.3.crate) = 21938
+SHA256 (python/rust/crates/rand_hc-0.2.0.crate) = ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c
+SIZE (python/rust/crates/rand_hc-0.2.0.crate) = 11670
+SHA256 (python/rust/crates/rand_hc-0.3.1.crate) = d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7
+SIZE (python/rust/crates/rand_hc-0.3.1.crate) = 11891
+SHA256 (python/rust/crates/rand_pcg-0.2.1.crate) = 16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429
+SIZE (python/rust/crates/rand_pcg-0.2.1.crate) = 11291
+SHA256 (python/rust/crates/redox_syscall-0.2.9.crate) = 5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee
+SIZE (python/rust/crates/redox_syscall-0.2.9.crate) = 23533
+SHA256 (python/rust/crates/redox_users-0.4.0.crate) = 528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64
+SIZE (python/rust/crates/redox_users-0.4.0.crate) = 13023
+SHA256 (python/rust/crates/regex-1.5.4.crate) = d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461
+SIZE (python/rust/crates/regex-1.5.4.crate) = 236581
+SHA256 (python/rust/crates/regex-syntax-0.6.25.crate) = f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b
+SIZE (python/rust/crates/regex-syntax-0.6.25.crate) = 293293
+SHA256 (python/rust/crates/remove_dir_all-0.5.3.crate) = 3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7
+SIZE (python/rust/crates/remove_dir_all-0.5.3.crate) = 9184
+SHA256 (python/rust/crates/rental-0.5.6.crate) = cc89fe2acac36d212474d138aaf939c04a82df5b61d07011571ebce5aef81f2e
+SIZE (python/rust/crates/rental-0.5.6.crate) = 16858
+SHA256 (python/rust/crates/rental-impl-0.5.5.crate) = 475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de
+SIZE (python/rust/crates/rental-impl-0.5.5.crate) = 12093
+SHA256 (python/rust/crates/ring-0.16.20.crate) = 3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc
+SIZE (python/rust/crates/ring-0.16.20.crate) = 5082615
+SHA256 (python/rust/crates/rusqlite-0.24.2.crate) = d5f38ee71cbab2c827ec0ac24e76f82eca723cee92c509a65f67dee393c25112
+SIZE (python/rust/crates/rusqlite-0.24.2.crate) = 120103
+SHA256 (python/rust/crates/rustc-demangle-0.1.20.crate) = dead70b0b5e03e9c814bcb6b01e03e68f7c57a80aa48c72ec92152ab3e818d49
+SIZE (python/rust/crates/rustc-demangle-0.1.20.crate) = 23298
+SHA256 (python/rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2
+SIZE (python/rust/crates/rustc-hash-1.1.0.crate) = 9331
+SHA256 (python/rust/crates/rustls-0.18.1.crate) = 5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81
+SIZE (python/rust/crates/rustls-0.18.1.crate) = 207782
+SHA256 (python/rust/crates/rustversion-1.0.5.crate) = 61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088
+SIZE (python/rust/crates/rustversion-1.0.5.crate) = 16984
+SHA256 (python/rust/crates/ryu-1.0.5.crate) = 71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e
+SIZE (python/rust/crates/ryu-1.0.5.crate) = 49570
+SHA256 (python/rust/crates/schannel-0.1.19.crate) = 8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75
+SIZE (python/rust/crates/schannel-0.1.19.crate) = 42755
+SHA256 (python/rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (python/rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (python/rust/crates/sct-0.6.1.crate) = b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce
+SIZE (python/rust/crates/sct-0.6.1.crate) = 26825
+SHA256 (python/rust/crates/security-framework-2.3.1.crate) = 23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467
+SIZE (python/rust/crates/security-framework-2.3.1.crate) = 61581
+SHA256 (python/rust/crates/security-framework-sys-2.3.0.crate) = 7e4effb91b4b8b6fb7732e670b6cee160278ff8e6bf485c7805d9e319d76e284
+SIZE (python/rust/crates/security-framework-sys-2.3.0.crate) = 12561
+SHA256 (python/rust/crates/serde-1.0.126.crate) = ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03
+SIZE (python/rust/crates/serde-1.0.126.crate) = 75138
+SHA256 (python/rust/crates/serde-aux-0.6.1.crate) = ae50f53d4b01e854319c1f5b854cd59471f054ea7e554988850d3f36ca1dc852
+SIZE (python/rust/crates/serde-aux-0.6.1.crate) = 5701
+SHA256 (python/rust/crates/serde_derive-1.0.126.crate) = 963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43
+SIZE (python/rust/crates/serde_derive-1.0.126.crate) = 54189
+SHA256 (python/rust/crates/serde_json-1.0.64.crate) = 799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79
+SIZE (python/rust/crates/serde_json-1.0.64.crate) = 115138
+SHA256 (python/rust/crates/serde_repr-0.1.7.crate) = 98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5
+SIZE (python/rust/crates/serde_repr-0.1.7.crate) = 10173
+SHA256 (python/rust/crates/serde_tuple-0.5.0.crate) = f4f025b91216f15a2a32aa39669329a475733590a015835d1783549a56d09427
+SIZE (python/rust/crates/serde_tuple-0.5.0.crate) = 3817
+SHA256 (python/rust/crates/serde_tuple_macros-0.5.0.crate) = 4076151d1a2b688e25aaf236997933c66e18b870d0369f8b248b8ab2be630d7e
+SIZE (python/rust/crates/serde_tuple_macros-0.5.0.crate) = 2205
+SHA256 (python/rust/crates/serde_urlencoded-0.6.1.crate) = 9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97
+SIZE (python/rust/crates/serde_urlencoded-0.6.1.crate) = 12540
+SHA256 (python/rust/crates/sha1-0.6.0.crate) = 2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d
+SIZE (python/rust/crates/sha1-0.6.0.crate) = 9244
+SHA256 (python/rust/crates/siphasher-0.3.5.crate) = cbce6d4507c7e4a3962091436e56e95290cb71fa302d0d270e32130b75fbff27
+SIZE (python/rust/crates/siphasher-0.3.5.crate) = 9455
+SHA256 (python/rust/crates/slab-0.4.3.crate) = f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527
+SIZE (python/rust/crates/slab-0.4.3.crate) = 15681
+SHA256 (python/rust/crates/slog-2.7.0.crate) = 8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06
+SIZE (python/rust/crates/slog-2.7.0.crate) = 45432
+SHA256 (python/rust/crates/slog-async-2.6.0.crate) = c60813879f820c85dbc4eabf3269befe374591289019775898d56a81a804fbdc
+SIZE (python/rust/crates/slog-async-2.6.0.crate) = 18190
+SHA256 (python/rust/crates/slog-envlogger-2.2.0.crate) = 906a1a0bc43fed692df4b82a5e2fbfc3733db8dad8bb514ab27a4f23ad04f5c0
+SIZE (python/rust/crates/slog-envlogger-2.2.0.crate) = 13240
+SHA256 (python/rust/crates/slog-scope-4.4.0.crate) = 2f95a4b4c3274cd2869549da82b57ccc930859bdbf5bcea0424bc5f140b3c786
+SIZE (python/rust/crates/slog-scope-4.4.0.crate) = 16753
+SHA256 (python/rust/crates/slog-stdlog-4.1.0.crate) = 8228ab7302adbf4fcb37e66f3cda78003feb521e7fd9e3847ec117a7784d0f5a
+SIZE (python/rust/crates/slog-stdlog-4.1.0.crate) = 14523
+SHA256 (python/rust/crates/slog-term-2.8.0.crate) = 95c1e7e5aab61ced6006149ea772770b84a0d16ce0f7885def313e4829946d76
+SIZE (python/rust/crates/slog-term-2.8.0.crate) = 25251
+SHA256 (python/rust/crates/smallvec-1.6.1.crate) = fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e
+SIZE (python/rust/crates/smallvec-1.6.1.crate) = 26444
+SHA256 (python/rust/crates/socket2-0.3.19.crate) = 122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e
+SIZE (python/rust/crates/socket2-0.3.19.crate) = 33782
+SHA256 (python/rust/crates/spin-0.5.2.crate) = 6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d
+SIZE (python/rust/crates/spin-0.5.2.crate) = 12004
+SHA256 (python/rust/crates/stable_deref_trait-1.2.0.crate) = a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3
+SIZE (python/rust/crates/stable_deref_trait-1.2.0.crate) = 8054
+SHA256 (python/rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
+SIZE (python/rust/crates/static_assertions-1.1.0.crate) = 18480
+SHA256 (python/rust/crates/string_cache-0.8.1.crate) = 8ddb1139b5353f96e429e1a5e19fbaf663bddedaa06d1dbd49f82e352601209a
+SIZE (python/rust/crates/string_cache-0.8.1.crate) = 14423
+SHA256 (python/rust/crates/string_cache_codegen-0.5.1.crate) = f24c8e5e19d22a726626f1a5e16fe15b132dcf21d10177fa5a45ce7962996b97
+SIZE (python/rust/crates/string_cache_codegen-0.5.1.crate) = 8243
+SHA256 (python/rust/crates/subtle-2.4.1.crate) = 6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601
+SIZE (python/rust/crates/subtle-2.4.1.crate) = 12630
+SHA256 (python/rust/crates/syn-1.0.74.crate) = 1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c
+SIZE (python/rust/crates/syn-1.0.74.crate) = 232974
+SHA256 (python/rust/crates/synstructure-0.12.5.crate) = 474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa
+SIZE (python/rust/crates/synstructure-0.12.5.crate) = 18020
+SHA256 (python/rust/crates/take_mut-0.2.2.crate) = f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60
+SIZE (python/rust/crates/take_mut-0.2.2.crate) = 4263
+SHA256 (python/rust/crates/tap-1.0.1.crate) = 55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369
+SIZE (python/rust/crates/tap-1.0.1.crate) = 11316
+SHA256 (python/rust/crates/tempfile-3.2.0.crate) = dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22
+SIZE (python/rust/crates/tempfile-3.2.0.crate) = 25892
+SHA256 (python/rust/crates/tendril-0.4.2.crate) = a9ef557cb397a4f0a5a3a628f06515f78563f2209e64d47055d9dc6052bf5e33
+SIZE (python/rust/crates/tendril-0.4.2.crate) = 37138
+SHA256 (python/rust/crates/term-0.7.0.crate) = c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f
+SIZE (python/rust/crates/term-0.7.0.crate) = 37082
+SHA256 (python/rust/crates/termcolor-1.1.2.crate) = 2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4
+SIZE (python/rust/crates/termcolor-1.1.2.crate) = 17287
+SHA256 (python/rust/crates/thiserror-1.0.26.crate) = 93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2
+SIZE (python/rust/crates/thiserror-1.0.26.crate) = 16711
+SHA256 (python/rust/crates/thiserror-impl-1.0.26.crate) = 060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745
+SIZE (python/rust/crates/thiserror-impl-1.0.26.crate) = 13431
+SHA256 (python/rust/crates/thread_local-1.1.3.crate) = 8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd
+SIZE (python/rust/crates/thread_local-1.1.3.crate) = 13111
+SHA256 (python/rust/crates/time-0.1.43.crate) = ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438
+SIZE (python/rust/crates/time-0.1.43.crate) = 28653
+SHA256 (python/rust/crates/tinystr-0.3.4.crate) = 29738eedb4388d9ea620eeab9384884fc3f06f586a2eddb56bedc5885126c7c1
+SIZE (python/rust/crates/tinystr-0.3.4.crate) = 19341
+SHA256 (python/rust/crates/tinyvec-1.3.1.crate) = 848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338
+SIZE (python/rust/crates/tinyvec-1.3.1.crate) = 42386
+SHA256 (python/rust/crates/tinyvec_macros-0.1.0.crate) = cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c
+SIZE (python/rust/crates/tinyvec_macros-0.1.0.crate) = 1817
+SHA256 (python/rust/crates/tokio-0.2.25.crate) = 6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092
+SIZE (python/rust/crates/tokio-0.2.25.crate) = 413390
+SHA256 (python/rust/crates/tokio-rustls-0.14.1.crate) = e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a
+SIZE (python/rust/crates/tokio-rustls-0.14.1.crate) = 23935
+SHA256 (python/rust/crates/tokio-socks-0.3.0.crate) = d611fd5d241872372d52a0a3d309c52d0b95a6a67671a6c8f7ab2c4a37fb2539
+SIZE (python/rust/crates/tokio-socks-0.3.0.crate) = 17434
+SHA256 (python/rust/crates/tokio-tls-0.3.1.crate) = 9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343
+SIZE (python/rust/crates/tokio-tls-0.3.1.crate) = 22517
+SHA256 (python/rust/crates/tokio-util-0.3.1.crate) = be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499
+SIZE (python/rust/crates/tokio-util-0.3.1.crate) = 27233
+SHA256 (python/rust/crates/toml-0.5.8.crate) = a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa
+SIZE (python/rust/crates/toml-0.5.8.crate) = 54219
+SHA256 (python/rust/crates/tower-service-0.3.1.crate) = 360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6
+SIZE (python/rust/crates/tower-service-0.3.1.crate) = 6299
+SHA256 (python/rust/crates/tracing-0.1.26.crate) = 09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d
+SIZE (python/rust/crates/tracing-0.1.26.crate) = 68583
+SHA256 (python/rust/crates/tracing-core-0.1.18.crate) = a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052
+SIZE (python/rust/crates/tracing-core-0.1.18.crate) = 48381
+SHA256 (python/rust/crates/tracing-futures-0.2.5.crate) = 97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2
+SIZE (python/rust/crates/tracing-futures-0.2.5.crate) = 11637
+SHA256 (python/rust/crates/try-lock-0.2.3.crate) = 59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642
+SIZE (python/rust/crates/try-lock-0.2.3.crate) = 4158
+SHA256 (python/rust/crates/type-map-0.4.0.crate) = b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46
+SIZE (python/rust/crates/type-map-0.4.0.crate) = 3177
+SHA256 (python/rust/crates/typenum-1.13.0.crate) = 879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06
+SIZE (python/rust/crates/typenum-1.13.0.crate) = 40238
+SHA256 (python/rust/crates/unic-langid-0.9.0.crate) = 73328fcd730a030bdb19ddf23e192187a6b01cd98be6d3140622a89129459ce5
+SIZE (python/rust/crates/unic-langid-0.9.0.crate) = 3899
+SHA256 (python/rust/crates/unic-langid-impl-0.9.0.crate) = 1a4a8eeaf0494862c1404c95ec2f4c33a2acff5076f64314b465e3ddae1b934d
+SIZE (python/rust/crates/unic-langid-impl-0.9.0.crate) = 33921
+SHA256 (python/rust/crates/unic-langid-macros-0.9.0.crate) = 18f980d6d87e8805f2836d64b4138cc95aa7986fa63b1f51f67d5fbff64dd6e5
+SIZE (python/rust/crates/unic-langid-macros-0.9.0.crate) = 1855
+SHA256 (python/rust/crates/unic-langid-macros-impl-0.9.0.crate) = 29396ffd97e27574c3e01368b1a64267d3064969e4848e2e130ff668be9daa9f
+SIZE (python/rust/crates/unic-langid-macros-impl-0.9.0.crate) = 1829
+SHA256 (python/rust/crates/unicase-2.6.0.crate) = 50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6
+SIZE (python/rust/crates/unicase-2.6.0.crate) = 23478
+SHA256 (python/rust/crates/unicode-bidi-0.3.5.crate) = eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0
+SIZE (python/rust/crates/unicode-bidi-0.3.5.crate) = 33423
+SHA256 (python/rust/crates/unicode-normalization-0.1.19.crate) = d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9
+SIZE (python/rust/crates/unicode-normalization-0.1.19.crate) = 107353
+SHA256 (python/rust/crates/unicode-segmentation-1.8.0.crate) = 8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b
+SIZE (python/rust/crates/unicode-segmentation-1.8.0.crate) = 94011
+SHA256 (python/rust/crates/unicode-width-0.1.8.crate) = 9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3
+SIZE (python/rust/crates/unicode-width-0.1.8.crate) = 16732
+SHA256 (python/rust/crates/unicode-xid-0.2.2.crate) = 8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3
+SIZE (python/rust/crates/unicode-xid-0.2.2.crate) = 14955
+SHA256 (python/rust/crates/unindent-0.1.7.crate) = f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7
+SIZE (python/rust/crates/unindent-0.1.7.crate) = 8346
+SHA256 (python/rust/crates/untrusted-0.7.1.crate) = a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a
+SIZE (python/rust/crates/untrusted-0.7.1.crate) = 7924
+SHA256 (python/rust/crates/url-2.2.2.crate) = a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c
+SIZE (python/rust/crates/url-2.2.2.crate) = 68555
+SHA256 (python/rust/crates/utf-8-0.7.6.crate) = 09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9
+SIZE (python/rust/crates/utf-8-0.7.6.crate) = 10422
+SHA256 (python/rust/crates/utime-0.3.1.crate) = 91baa0c65eabd12fcbdac8cc35ff16159cab95cae96d0222d6d0271db6193cef
+SIZE (python/rust/crates/utime-0.3.1.crate) = 8311
+SHA256 (python/rust/crates/vcpkg-0.2.15.crate) = accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426
+SIZE (python/rust/crates/vcpkg-0.2.15.crate) = 228735
+SHA256 (python/rust/crates/version_check-0.9.3.crate) = 5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe
+SIZE (python/rust/crates/version_check-0.9.3.crate) = 12547
+SHA256 (python/rust/crates/want-0.3.0.crate) = 1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0
+SIZE (python/rust/crates/want-0.3.0.crate) = 6550
+SHA256 (python/rust/crates/wasi-0.9.0+wasi-snapshot-preview1.crate) = cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519
+SIZE (python/rust/crates/wasi-0.9.0+wasi-snapshot-preview1.crate) = 31521
+SHA256 (python/rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6
+SIZE (python/rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = 27505
+SHA256 (python/rust/crates/wasm-bindgen-0.2.74.crate) = d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd
+SIZE (python/rust/crates/wasm-bindgen-0.2.74.crate) = 158439
+SHA256 (python/rust/crates/wasm-bindgen-backend-0.2.74.crate) = 3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900
+SIZE (python/rust/crates/wasm-bindgen-backend-0.2.74.crate) = 25434
+SHA256 (python/rust/crates/wasm-bindgen-futures-0.4.24.crate) = 5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1
+SIZE (python/rust/crates/wasm-bindgen-futures-0.4.24.crate) = 14759
+SHA256 (python/rust/crates/wasm-bindgen-macro-0.2.74.crate) = 088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4
+SIZE (python/rust/crates/wasm-bindgen-macro-0.2.74.crate) = 11536
+SHA256 (python/rust/crates/wasm-bindgen-macro-support-0.2.74.crate) = be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97
+SIZE (python/rust/crates/wasm-bindgen-macro-support-0.2.74.crate) = 17831
+SHA256 (python/rust/crates/wasm-bindgen-shared-0.2.74.crate) = d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f
+SIZE (python/rust/crates/wasm-bindgen-shared-0.2.74.crate) = 7163
+SHA256 (python/rust/crates/web-sys-0.3.51.crate) = e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582
+SIZE (python/rust/crates/web-sys-0.3.51.crate) = 651133
+SHA256 (python/rust/crates/webpki-0.21.4.crate) = b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea
+SIZE (python/rust/crates/webpki-0.21.4.crate) = 58505
+SHA256 (python/rust/crates/webpki-roots-0.20.0.crate) = 0f20dea7535251981a9670857150d571846545088359b28e4951d350bdaf179f
+SIZE (python/rust/crates/webpki-roots-0.20.0.crate) = 244786
+SHA256 (python/rust/crates/which-4.1.0.crate) = b55551e42cbdf2ce2bedd2203d0cc08dba002c27510f86dab6d0ce304cba3dfe
+SIZE (python/rust/crates/which-4.1.0.crate) = 7684
+SHA256 (python/rust/crates/winapi-0.2.8.crate) = 167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a
+SIZE (python/rust/crates/winapi-0.2.8.crate) = 455145
+SHA256 (python/rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (python/rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (python/rust/crates/winapi-build-0.1.1.crate) = 2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc
+SIZE (python/rust/crates/winapi-build-0.1.1.crate) = 669
+SHA256 (python/rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (python/rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (python/rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178
+SIZE (python/rust/crates/winapi-util-0.1.5.crate) = 10164
+SHA256 (python/rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (python/rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (python/rust/crates/winreg-0.7.0.crate) = 0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69
+SIZE (python/rust/crates/winreg-0.7.0.crate) = 21225
+SHA256 (python/rust/crates/ws2_32-sys-0.2.1.crate) = d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e
+SIZE (python/rust/crates/ws2_32-sys-0.2.1.crate) = 4697
+SHA256 (python/rust/crates/wyz-0.2.0.crate) = 85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214
+SIZE (python/rust/crates/wyz-0.2.0.crate) = 12926
+SHA256 (python/rust/crates/xml5ever-0.16.1.crate) = 0b1b52e6e8614d4a58b8e70cf51ec0cc21b256ad8206708bcff8139b5bbd6a59
+SIZE (python/rust/crates/xml5ever-0.16.1.crate) = 41282
+SHA256 (python/rust/crates/zip-0.5.13.crate) = 93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815
+SIZE (python/rust/crates/zip-0.5.13.crate) = 48237
+SHA256 (python/ankitects-anki-2.1.44_GH0.tar.gz) = c24c87aac042b3ac803ea22669091730a48b575ee9d9939672d46caf6d3287b5
+SIZE (python/ankitects-anki-2.1.44_GH0.tar.gz) = 1078527
+SHA256 (python/ankitects-anki-core-i18n-30ab198_GH0.tar.gz) = 99afa625af30055255b2f8e636f0b38007c6da792d399306f0deb4b2672e1a83
+SIZE (python/ankitects-anki-core-i18n-30ab198_GH0.tar.gz) = 715196
+SHA256 (python/ankitects-anki-desktop-ftl-3920d26_GH0.tar.gz) = c33512feb108400839eb18337a0531b755c2b343a9390b326216760bd0285a5f
+SIZE (python/ankitects-anki-desktop-ftl-3920d26_GH0.tar.gz) = 174083
+SHA256 (python/ankitects-hyper-timeout-anki-2020-11-03_GH0.tar.gz) = ac85b7bf4911586a06bed019ec16bd10fbeb09bcab0fe4c9783123b1c36e4366
+SIZE (python/ankitects-hyper-timeout-anki-2020-11-03_GH0.tar.gz) = 8473
+SHA256 (python/ankitects-reqwest-anki-2020-11-03_GH0.tar.gz) = d06b88063a7d150e83039979e98d6aa1bf84e7dcd7aecc16b6f76a5a72d584bd
+SIZE (python/ankitects-reqwest-anki-2020-11-03_GH0.tar.gz) = 169320
+SHA256 (python/ankitects-tokio-io-timeout-anki-2020-11-03_GH0.tar.gz) = d081728c976f90f0d605ab4a8477e1448146bc06fc0327fe25894ea39aa93c8e
+SIZE (python/ankitects-tokio-io-timeout-anki-2020-11-03_GH0.tar.gz) = 8172
+SHA256 (python/bazelbuild-bazel-skylib-e59b620_GH0.tar.gz) = 1c187d8d6b2ad6804cbb0f76c089e3667ae5d363d87cd46a425f25654b0448cf
+SIZE (python/bazelbuild-bazel-skylib-e59b620_GH0.tar.gz) = 78257
+SHA256 (python/bazelbuild-rules_cc-40548a2_GH0.tar.gz) = 9ad895164b7d69a4eb43630a3477bd0737981065a3c92b4b4d6b000d6a8ea7d7
+SIZE (python/bazelbuild-rules_cc-40548a2_GH0.tar.gz) = 129284
+SHA256 (python/bazelbuild-rules_java-c13e3ea_GH0.tar.gz) = 113ddc63ac86f493453c4298d78f726cc219ea33cd9fe23659f4269f747390cb
+SIZE (python/bazelbuild-rules_java-c13e3ea_GH0.tar.gz) = 12055
+SHA256 (python/bazelbuild-rules_nodejs-1689fa1_GH0.tar.gz) = a65952b0e7ad2470699d9d7dcd311ff36e024cbe8ceb49b83bb54688b2102ee8
+SIZE (python/bazelbuild-rules_nodejs-1689fa1_GH0.tar.gz) = 5603917
+SHA256 (python/bazelbuild-rules_proto-f7a30f6_GH0.tar.gz) = d92ce309a1309b4e67a761b9f446bd4c9802aadb685199cb94d5eb637b72bae2
+SIZE (python/bazelbuild-rules_proto-f7a30f6_GH0.tar.gz) = 14397
+SHA256 (python/ankitects-rules_pip-73953e0_GH0.tar.gz) = e32cfe55d3d6a931b2d9d11fe69c82166e10138d015fbecfb82d3aea15b8aceb
+SIZE (python/ankitects-rules_pip-73953e0_GH0.tar.gz) = 2075755
+SHA256 (python/ankitects-rules_python-3927c9b_GH0.tar.gz) = 4c367da5f0b8bdd585ae097d7666e1f491e6def99a24b39b95daf48976f2948d
+SIZE (python/ankitects-rules_python-3927c9b_GH0.tar.gz) = 2565208
+SHA256 (python/ankitects-rules_rust-dfd1200_GH0.tar.gz) = 3c3a6f51bf5e2aab73f9cf80b975b8887c9ef5fc404912a6f7af9c50fd54f6ec
+SIZE (python/ankitects-rules_rust-dfd1200_GH0.tar.gz) = 284139
+SHA256 (python/ankitects-rules_sass-275ace7_GH0.tar.gz) = 0d42aa56eb20694ad0b802bf478449ec9879cf4ac6d9aaf652d6945d2664a6d7
+SIZE (python/ankitects-rules_sass-275ace7_GH0.tar.gz) = 20268
+SHA256 (python/ankitects-rules_svelte-f09155c_GH0.tar.gz) = 711d01b2e3ee7e2a9a81d0d87fdfd6645be6c9813064e839b66afb9015d72b10
+SIZE (python/ankitects-rules_svelte-f09155c_GH0.tar.gz) = 63486
diff --git a/games/anki/files/bazel/BUILD.bazel-i18n b/games/anki/files/bazel/BUILD.bazel-i18n
new file mode 100644
index 000000000000..200af3d25163
--- /dev/null
+++ b/games/anki/files/bazel/BUILD.bazel-i18n
@@ -0,0 +1,10 @@
+# Used for the fluent i18n translation bazel repositories:
+# - ftlextra
+# - ftlrslib
+
+filegroup(
+ name = "files",
+ srcs = glob(["**/*.ftl"]),
+ visibility = ["//visibility:public"],
+)
+exports_files(["l10n.toml"])
diff --git a/games/anki/files/bazel/BUILD.bazel-local_node b/games/anki/files/bazel/BUILD.bazel-local_node
new file mode 100644
index 000000000000..62a687e4a1a1
--- /dev/null
+++ b/games/anki/files/bazel/BUILD.bazel-local_node
@@ -0,0 +1 @@
+exports_files(["node/bin/node"])
diff --git a/games/anki/files/bazel/BUILD.bazel-protoc_bin_freebsd b/games/anki/files/bazel/BUILD.bazel-protoc_bin_freebsd
new file mode 100644
index 000000000000..0ef0e2ab8079
--- /dev/null
+++ b/games/anki/files/bazel/BUILD.bazel-protoc_bin_freebsd
@@ -0,0 +1 @@
+exports_files(["bin/protoc"])
diff --git a/games/anki/files/bazel/BUILD.bazel-pylib-rsbridge b/games/anki/files/bazel/BUILD.bazel-pylib-rsbridge
new file mode 100644
index 000000000000..7e84e1562e1c
--- /dev/null
+++ b/games/anki/files/bazel/BUILD.bazel-pylib-rsbridge
@@ -0,0 +1,12 @@
+# Handles the further processing of "librsbridge.so" within bazel
+
+load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
+
+copy_file(
+ name = "rsbridge",
+ src = "//local_repos/rust_output/librsbridge",
+ out = "librsbridge.so",
+ visibility = [
+ "//pylib:__subpackages__",
+ ],
+)
diff --git a/games/anki/files/bazel/BUILD.bazel-pyqt5 b/games/anki/files/bazel/BUILD.bazel-pyqt5
new file mode 100644
index 000000000000..f8566c60fca5
--- /dev/null
+++ b/games/anki/files/bazel/BUILD.bazel-pyqt5
@@ -0,0 +1,27 @@
+# Stub layout for the PyQT5 repository
+
+load("@rules_python//python:defs.bzl", "py_library")
+
+package(default_visibility = ["//visibility:public"])
+
+py_library(
+ name = "pkg",
+ srcs = glob(["**/*.py"]),
+ data = glob(["**/*"], exclude = [
+ "**/*.py",
+ "**/*.pyc",
+ "**/* *",
+ "BUILD",
+ "WORKSPACE",
+ "bin/*",
+ "__pycache__",
+ # these make building slower
+ "Qt/qml/**",
+ "**/*.sip",
+ "**/*.png",
+ ]),
+
+ # This makes this directory a top-level in the python import
+ # search path for anything that depends on this.
+ imports = ["."],
+)
diff --git a/games/anki/files/bazel/BUILD.bazel-rslib b/games/anki/files/bazel/BUILD.bazel-rslib
new file mode 100644
index 000000000000..bb579eac2e9e
--- /dev/null
+++ b/games/anki/files/bazel/BUILD.bazel-rslib
@@ -0,0 +1,25 @@
+# Handles the further processing of "fluent.proto" within bazel
+
+load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
+load("@rules_proto//proto:defs.bzl", "proto_library")
+
+copy_file(
+ name = "fluent_proto",
+ src = "//local_repos/rust_output/fluent_proto",
+ out = "fluent.proto",
+ visibility = ["//visibility:public"],
+)
+
+proto_library(
+ name = "fluent_proto_lib",
+ srcs = ["fluent.proto"],
+ visibility = ["//visibility:public"],
+)
+
+proto_library(
+ name = "backend_proto_lib",
+ srcs = ["backend.proto"],
+ visibility = ["//visibility:public"],
+)
+
+exports_files(["backend.proto"])
diff --git a/games/anki/files/bazel/BUILD.bazel-rust_output-fluent_proto b/games/anki/files/bazel/BUILD.bazel-rust_output-fluent_proto
new file mode 100644
index 000000000000..8bc3891275a5
--- /dev/null
+++ b/games/anki/files/bazel/BUILD.bazel-rust_output-fluent_proto
@@ -0,0 +1,7 @@
+# Expose "fluent.proto" to bazel
+
+filegroup(
+ name = "fluent_proto",
+ srcs = ["fluent.proto"],
+ visibility = ["//visibility:public"],
+)
diff --git a/games/anki/files/bazel/BUILD.bazel-rust_output-librsbridge b/games/anki/files/bazel/BUILD.bazel-rust_output-librsbridge
new file mode 100644
index 000000000000..9b5ad80ca11b
--- /dev/null
+++ b/games/anki/files/bazel/BUILD.bazel-rust_output-librsbridge
@@ -0,0 +1,7 @@
+# Expose "librsbridge.so" to bazel
+
+filegroup(
+ name = "librsbridge",
+ srcs = ["librsbridge.so"],
+ visibility = ["//visibility:public"],
+)
diff --git a/games/anki/files/bazel/pyqt5.bzl b/games/anki/files/bazel/pyqt5.bzl
new file mode 100644
index 000000000000..059f34c410ab
--- /dev/null
+++ b/games/anki/files/bazel/pyqt5.bzl
@@ -0,0 +1,13 @@
+# Stub version of "pyqt5" to avoid loading external dependencies.
+
+def _impl(repository_ctx):
+ return None
+
+install_pyqt5 = repository_rule(
+ attrs = {
+ "python_interpreter": attr.string(default = "python"),
+ "python_runtime": attr.string(mandatory=True),
+ },
+ local=True,
+ implementation = _impl,
+)
diff --git a/games/anki/files/bazel/repos.bzl b/games/anki/files/bazel/repos.bzl
new file mode 100644
index 000000000000..00f4aef8efcd
--- /dev/null
+++ b/games/anki/files/bazel/repos.bzl
@@ -0,0 +1,109 @@
+# Definitions of local bazel repositories
+
+def register_repos():
+ "Register required dependency repos."
+
+ # bazel
+ #########
+ native.local_repository(
+ name = "bazel_skylib",
+ path = "%%_MY_LOCALREPO%%/bzlskylib",
+ )
+
+ # rust
+ ########
+ native.local_repository(
+ name = "io_bazel_rules_rust",
+ path = "%%_MY_LOCALREPO%%/rules_rust",
+ )
+
+ # protobuf
+ ############
+ native.local_repository(
+ name = "rules_proto",
+ path = "%%_MY_LOCALREPO%%/rules_proto",
+ )
+
+ # python
+ ##########
+ native.local_repository(
+ name = "rules_python",
+ path = "%%_MY_LOCALREPO%%/rules_python",
+ )
+
+ # python pip
+ ##############
+ native.local_repository(
+ name = "com_github_ali5h_rules_pip",
+ path = "%%_MY_LOCALREPO%%/rules_pip",
+ )
+
+ # javascript
+ ##############
+ native.local_repository(
+ name = "build_bazel_rules_nodejs",
+ path = "%%_MY_LOCALREPO%%/rules_nodejs",
+ )
+
+ # sass
+ ########
+ native.local_repository(
+ name = "io_bazel_rules_sass",
+ path = "%%_MY_LOCALREPO%%/rules_sass",
+ )
+
+ # svelte
+ ##########
+ native.local_repository(
+ name = "build_bazel_rules_svelte",
+ path = "%%_MY_LOCALREPO%%/rules_svelte",
+ )
+
+ # i18n translation files
+ ##########################
+ native.local_repository(
+ name = "rslib_ftl",
+ path = "%%_MY_LOCALREPO%%/ftlrslib",
+ )
+
+ # i18n extra files
+ ####################
+ native.local_repository(
+ name = "extra_ftl",
+ path = "%%_MY_LOCALREPO%%/ftlextra",
+ )
+
+ # transitive dependency
+ #########################
+ native.local_repository(
+ name = "rules_cc",
+ path = "%%_MY_LOCALREPO%%/rules_cc",
+ )
+
+ # transitive dependency
+ #########################
+ native.local_repository(
+ name = "rules_java",
+ path = "%%_MY_LOCALREPO%%/rules_java",
+ )
+
+ # transitive dependency
+ #########################
+ native.local_repository(
+ name = "build_bazel_rules_typescript",
+ path = "%%_MY_LOCALREPO%%/rules_nodejs/third_party/github.com/bazelbuild/rules_typescript",
+ )
+
+ # stub pyqt5 repository
+ #########################
+ native.local_repository(
+ name = "pyqt5",
+ path = "%%_MY_LOCALREPO%%/pyqt5",
+ )
+
+ # provides node from ports
+ ############################
+ native.local_repository(
+ name = "local_node",
+ path = "%%_MY_LOCALREPO%%/local_node",
+ )
diff --git a/games/anki/files/patch-Makefile b/games/anki/files/patch-Makefile
deleted file mode 100644
index 69ca2a9c7852..000000000000
--- a/games/anki/files/patch-Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-Coerce sequential processing of the build targets as it's already done for the
-"develop" target in the same file.
-
-Not doing this will often cause failures with the "build-qt" target that needs
-files in ${WRKSRC}/ts/dist/ which is created by the "build-ts" target.
-
-A workaround would be to set MAKE_JOBS_UNSAFE but that would also slow down the
-compilation of the Rust library.
-
-Also the "build-ts" target must be run after the "build-pylib" target otherwise
-it produces a ${WRKSRC}/ts/dist/graphs.js with wrong content.
-
---- Makefile.orig 2020-08-30 01:23:44 UTC
-+++ Makefile
-@@ -115,7 +115,11 @@ qt/po/repo:
- $(MAKE) pull-i18n
-
- .PHONY: build
--build: clean-dist build-ts build-rspy build-pylib build-qt add-buildhash
-+build:
-+ @set -eu -o pipefail ${SHELLFLAGS}; \
-+ for dir in $(DEVEL); do \
-+ $(SUBMAKE) -C $$dir build BUILDFLAGS="$(BUILDFLAGS)"; \
-+ done
- @echo
- @echo "Build complete."
-
diff --git a/games/anki/files/patch-defs.bzl b/games/anki/files/patch-defs.bzl
new file mode 100644
index 000000000000..9065e3756f88
--- /dev/null
+++ b/games/anki/files/patch-defs.bzl
@@ -0,0 +1,61 @@
+Avoid loading of Rust and Python PIP rules as both tries to load their
+dependencies (cargo crates, Python packages) during the build process.
+
+Also define local repositories to use "www/node" and "www/yarn" from the
+Ports tree.
+
+--- defs.bzl.orig 2021-05-04 05:04:50 UTC
++++ defs.bzl
+@@ -1,6 +1,5 @@
+ load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
+ load("@bazel_skylib//lib:versions.bzl", "versions")
+-load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories")
+ load("@net_ankiweb_anki//cargo:crates.bzl", "raze_fetch_remote_crates")
+ load(":python.bzl", "setup_local_python")
+ load(":protobuf.bzl", "setup_protobuf_binary")
+@@ -8,7 +7,6 @@ load("//rslib:clang_format.bzl", "setup_clang_format")
+ load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install")
+ load("@io_bazel_rules_sass//:defs.bzl", "sass_repositories")
+ load("@build_bazel_rules_svelte//:defs.bzl", "rules_svelte_dependencies")
+-load("@com_github_ali5h_rules_pip//:defs.bzl", "pip_import")
+ load("//pip/pyqt5:defs.bzl", "install_pyqt5")
+
+ anki_version = "2.1.44"
+@@ -18,13 +16,6 @@ def setup_deps():
+
+ versions.check(minimum_bazel_version = "3.7.0")
+
+- rust_repositories(
+- edition = "2018",
+- version = "1.48.0",
+- )
+-
+- raze_fetch_remote_crates()
+-
+ setup_local_python(name = "python")
+
+ setup_protobuf_binary(name = "com_google_protobuf")
+@@ -33,18 +24,16 @@ def setup_deps():
+
+ native.register_toolchains("@python//:python3_toolchain")
+
+- pip_import(
+- name = "py_deps",
+- requirements = "@net_ankiweb_anki//pip:requirements.txt",
+- python_runtime = "@python//:python",
+- )
+-
+ install_pyqt5(
+ name = "pyqt5",
+ python_runtime = "@python//:python",
+ )
+
+- node_repositories(package_json = ["@net_ankiweb_anki//ts:package.json"])
++ node_repositories(
++ package_json = ["@net_ankiweb_anki//ts:package.json"],
++ vendored_node = "@local_node//:node",
++ vendored_yarn = "@local_node//:yarn",
++ )
+
+ yarn_install(
+ name = "npm",
diff --git a/games/anki/files/patch-ftl_BUILD.bazel b/games/anki/files/patch-ftl_BUILD.bazel
new file mode 100644
index 000000000000..1d09b3dd0383
--- /dev/null
+++ b/games/anki/files/patch-ftl_BUILD.bazel
@@ -0,0 +1,16 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- ftl/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
++++ ftl/BUILD.bazel
+@@ -1,10 +1,6 @@
+-load("@py_deps//:requirements.bzl", "requirement")
+
+ fluent_syntax = [
+- requirement("fluent.syntax"),
+- requirement("compare-locales"),
+ # undeclared runtime dependency
+- requirement("six"),
+ ]
+
+ filegroup(
diff --git a/games/anki/files/patch-late__deps.bzl b/games/anki/files/patch-late__deps.bzl
new file mode 100644
index 000000000000..cae77b835aec
--- /dev/null
+++ b/games/anki/files/patch-late__deps.bzl
@@ -0,0 +1,14 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- late_deps.bzl.orig 2021-05-04 05:04:50 UTC
++++ late_deps.bzl
+@@ -1,8 +1,6 @@
+ """Repo setup that can't happen until after defs.bzl:setup_deps() is run."""
+
+-load("@py_deps//:requirements.bzl", "pip_install")
+ load("@npm//@bazel/labs:package.bzl", "npm_bazel_labs_dependencies")
+
+ def setup_late_deps():
+- pip_install()
+ npm_bazel_labs_dependencies()
diff --git a/games/anki/files/patch-local__repos_rules__nodejs_internal_common_os__name.bzl b/games/anki/files/patch-local__repos_rules__nodejs_internal_common_os__name.bzl
new file mode 100644
index 000000000000..b34274f6fcbb
--- /dev/null
+++ b/games/anki/files/patch-local__repos_rules__nodejs_internal_common_os__name.bzl
@@ -0,0 +1,29 @@
+Add FreeBSD to the list of supported operating systems.
+
+At the moment only the "amd64" architecture is defined here but it should be
+possible to add more architectures here.
+
+--- local_repos/rules_nodejs/internal/common/os_name.bzl.orig 2021-07-27 08:47:19 UTC
++++ local_repos/rules_nodejs/internal/common/os_name.bzl
+@@ -21,6 +21,7 @@ OS_ARCH_NAMES = [
+ ("linux", "amd64"),
+ ("linux", "arm64"),
+ ("linux", "s390x"),
++ ("freebsd", "amd64"),
+ ]
+
+ OS_NAMES = ["_".join(os_arch_name) for os_arch_name in OS_ARCH_NAMES]
+@@ -48,6 +49,13 @@ def os_name(rctx):
+ return OS_NAMES[4]
+ else:
+ return OS_NAMES[2]
++ elif os_name.startswith("freebsd"):
++ # This is not ideal, but bazel doesn't directly expose arch.
++ arch = rctx.execute(["uname", "-m"]).stdout.strip()
++ if arch == "amd64":
++ return OS_NAMES[5]
++ else:
++ fail("Unsupported FreeBSD architecture: " + arch)
+ else:
+ fail("Unsupported operating system: " + os_name)
+
diff --git a/games/anki/files/patch-local__repos_rules__nodejs_internal_node_node__patches.js b/games/anki/files/patch-local__repos_rules__nodejs_internal_node_node__patches.js
new file mode 100644
index 000000000000..a7ce2d7ad36a
--- /dev/null
+++ b/games/anki/files/patch-local__repos_rules__nodejs_internal_node_node__patches.js
@@ -0,0 +1,13 @@
+Avoid hardcoded paths and Use "shells/bash" from the Ports tree.
+
+--- local_repos/rules_nodejs/internal/node/node_patches.js.orig 2021-02-20 14:13:32 UTC
++++ local_repos/rules_nodejs/internal/node/node_patches.js
+@@ -579,7 +579,7 @@ set Path=${nodeDir};%Path%
+ else {
+ const nodeEntry = path.join(nodeDir, 'node');
+ if (!fs$1.existsSync(nodeEntry)) {
+- fs$1.writeFileSync(nodeEntry, `#!/bin/bash
++ fs$1.writeFileSync(nodeEntry, `#!%%LOCALBASE%%/bin/bash
+ export NP_SUBPROCESS_NODE_DIR="${nodeDir}"
+ export PATH="${nodeDir}":\$PATH
+ if [[ ! "\${@}" =~ "${file}" ]]; then
diff --git a/games/anki/files/patch-local__repos_rules__nodejs_internal_npm__install_npm__install.bzl b/games/anki/files/patch-local__repos_rules__nodejs_internal_npm__install_npm__install.bzl
new file mode 100644
index 000000000000..ba8b4ee38d91
--- /dev/null
+++ b/games/anki/files/patch-local__repos_rules__nodejs_internal_npm__install_npm__install.bzl
@@ -0,0 +1,14 @@
+Add additional arguments to "www/yarn" to point to the cache folder and prevent
+it to establish network connections during the build process.
+
+--- local_repos/rules_nodejs/internal/npm_install/npm_install.bzl.orig 2021-02-21 10:43:57 UTC
++++ local_repos/rules_nodejs/internal/npm_install/npm_install.bzl
+@@ -360,6 +360,8 @@ def _yarn_install_impl(repository_ctx):
+ yarn = get_yarn_label(repository_ctx)
+
+ yarn_args = []
++ yarn_args.append("--cache-folder %%_MY_YARNCACHE%%")
++ yarn_args.append("--offline")
+
+ # Set frozen lockfile as default install to install the exact version from the yarn.lock
+ # file. To perform an yarn install use the vendord yarn binary with:
diff --git a/games/anki/files/patch-local__repos_rules__nodejs_toolchains_node_BUILD.bazel b/games/anki/files/patch-local__repos_rules__nodejs_toolchains_node_BUILD.bazel
new file mode 100644
index 000000000000..709ac8495747
--- /dev/null
+++ b/games/anki/files/patch-local__repos_rules__nodejs_toolchains_node_BUILD.bazel
@@ -0,0 +1,55 @@
+Add FreeBSD to the list of supported operating systems.
+
+At the moment only the "amd64" architecture is defined here but it should be
+possible to add more architectures here.
+
+--- local_repos/rules_nodejs/toolchains/node/BUILD.bazel.orig 2021-02-20 14:13:32 UTC
++++ local_repos/rules_nodejs/toolchains/node/BUILD.bazel
+@@ -26,6 +26,14 @@ platform(
+ )
+
+ platform(
++ name = "freebsd_amd64",
++ constraint_values = [
++ "@bazel_tools//platforms:freebsd",
++ "@bazel_tools//platforms:x86_64",
++ ],
++)
++
++platform(
+ name = "linux_amd64",
+ constraint_values = [
+ "@bazel_tools//platforms:linux",
+@@ -78,6 +86,7 @@ alias(
+ name = "toolchain",
+ actual = select({
+ "@bazel_tools//src/conditions:darwin": "@nodejs_darwin_amd64_config//:toolchain",
++ "@bazel_tools//src/conditions:freebsd_x86_64": "@nodejs_freebsd_amd64_config//:toolchain",
+ "@bazel_tools//src/conditions:linux_aarch64": "@nodejs_linux_arm64_config//:toolchain",
+ "@bazel_tools//src/conditions:linux_s390x": "@nodejs_linux_s390x_config//:toolchain",
+ "@bazel_tools//src/conditions:linux_x86_64": "@nodejs_linux_amd64_config//:toolchain",
+@@ -92,6 +101,7 @@ alias(
+ name = "node_bin",
+ actual = select({
+ "@bazel_tools//src/conditions:darwin": "@nodejs_darwin_amd64//:node_bin",
++ "@bazel_tools//src/conditions:freebsd_x86_64": "@nodejs_freebsd_amd64//:node_bin",
+ "@bazel_tools//src/conditions:linux_aarch64": "@nodejs_linux_arm64//:node_bin",
+ "@bazel_tools//src/conditions:linux_s390x": "@nodejs_linux_s390x//:node_bin",
+ "@bazel_tools//src/conditions:linux_x86_64": "@nodejs_linux_amd64//:node_bin",
+@@ -99,6 +109,16 @@ alias(
+ "//conditions:default": "@nodejs_linux_amd64//:node_bin",
+ }),
+ visibility = ["//visibility:public"],
++)
++
++toolchain(
++ name = "node_freebsd_amd64_toolchain",
++ target_compatible_with = [
++ "@bazel_tools//platforms:freebsd",
++ "@bazel_tools//platforms:x86_64",
++ ],
++ toolchain = "@nodejs_freebsd_amd64_config//:toolchain",
++ toolchain_type = ":toolchain_type",
+ )
+
+ toolchain(
diff --git a/games/anki/files/patch-platforms_BUILD.bazel b/games/anki/files/patch-platforms_BUILD.bazel
new file mode 100644
index 000000000000..d6d048fdc1f5
--- /dev/null
+++ b/games/anki/files/patch-platforms_BUILD.bazel
@@ -0,0 +1,17 @@
+At the moment only the "amd64" architecture is defined here but it should be
+possible to add more architectures here.
+
+--- platforms/BUILD.bazel.orig 2021-01-08 07:47:26 UTC
++++ platforms/BUILD.bazel
+@@ -23,3 +23,11 @@ config_setting(
+ "@platforms//cpu:x86_64",
+ ],
+ )
++
++config_setting(
++ name = "freebsd_x86_64",
++ constraint_values = [
++ "@platforms//os:freebsd",
++ "@platforms//cpu:x86_64",
++ ],
++)
diff --git a/games/anki/files/patch-protobuf.bzl b/games/anki/files/patch-protobuf.bzl
new file mode 100644
index 000000000000..054ec7dea4f3
--- /dev/null
+++ b/games/anki/files/patch-protobuf.bzl
@@ -0,0 +1,27 @@
+Define a local repository to use "devel/protobuf" from the Ports tree.
+
+At the moment it is only exposed for the "amd64" architecture but it should be
+possible to add more architectures here.
+
+--- protobuf.bzl.orig 2021-03-27 05:13:11 UTC
++++ protobuf.bzl
+@@ -15,6 +15,7 @@ alias(
+ "@net_ankiweb_anki//platforms:windows_x86_64": "@protoc_bin_windows//:bin/protoc.exe",
+ "@net_ankiweb_anki//platforms:macos_x86_64": "@protoc_bin_macos//:bin/protoc",
+ "@net_ankiweb_anki//platforms:linux_x86_64": "@protoc_bin_linux_x86_64//:bin/protoc",
++ "@net_ankiweb_anki//platforms:freebsd_x86_64": "@protoc_bin_freebsd//:bin/protoc",
+ "@net_ankiweb_anki//platforms:linux_arm64": "@protoc_bin_linux_arm64//:bin/protoc"
+ }),
+ visibility = ["//visibility:public"]
+@@ -66,6 +67,11 @@ def setup_protobuf_binary(name):
+ ],
+ sha256 = "642554ed4dd2dba94e1afddcccdd7d832999cea309299cc5952f13db389894f8",
+ build_file_content = """exports_files(["bin/protoc.exe"])""",
++ )
++
++ native.local_repository(
++ name = "protoc_bin_freebsd",
++ path = "%%_MY_LOCALREPO%%/protoc_bin_freebsd",
+ )
+
+ if not native.existing_rule(name):
diff --git a/games/anki/files/patch-pylib_Makefile b/games/anki/files/patch-pylib_Makefile
deleted file mode 100644
index 24067b37d2f5..000000000000
--- a/games/anki/files/patch-pylib_Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-Use the current directory to locate and load the ankirspy (= Rust/Python
-bridge) module that was built with "build-rspy" target.
-
-Also avoid Python wheel generation as the produced wheels won't be used. The
-Python code will be compiled and installed via Port's Makefile.
-
---- pylib/Makefile.orig 2020-08-30 01:23:44 UTC
-+++ pylib/Makefile
-@@ -32,11 +32,9 @@ PHONY: all
- all: check
-
- .build/run-deps: setup.py
-- SKIP_ANKI_RSPY=true python -m pip install -e .
- @touch $@
-
- .build/dev-deps: requirements.dev
-- python -m pip install -r requirements.dev
- @touch $@
-
- PROTODEPS := ../proto/backend.proto ../proto/fluent.proto
-@@ -45,7 +43,7 @@ PROTODEPS := ../proto/backend.proto ../proto/fluent.pr
- protoc --proto_path=../proto --python_out=anki --mypy_out=anki $(PROTODEPS)
- perl -i'' -pe 's/from fluent_pb2/from anki.fluent_pb2/' anki/backend_pb2.pyi
- perl -i'' -pe 's/import fluent_pb2/import anki.fluent_pb2/' anki/backend_pb2.py
-- python tools/genbackend.py
-+ PYTHONPATH=. python tools/genbackend.py
- python -m black -t py36 anki/rsbackend_gen.py
- @touch $@
-
-@@ -104,9 +102,6 @@ CHECKDEPS := $(shell "${FIND}" anki tests -name '*.py'
- build: .build/build
-
- .build/build: $(BUILD_STEPS) $(CHECKDEPS)
-- rm -rf dist build
-- python setup.py -q bdist_wheel
-- rsync -a dist/*.whl ../dist/
- touch $@
-
- # prepare code for running in place
diff --git a/games/anki/files/patch-pylib_anki_BUILD.bazel b/games/anki/files/patch-pylib_anki_BUILD.bazel
new file mode 100644
index 000000000000..99d13d99839f
--- /dev/null
+++ b/games/anki/files/patch-pylib_anki_BUILD.bazel
@@ -0,0 +1,34 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- pylib/anki/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
++++ pylib/anki/BUILD.bazel
+@@ -1,6 +1,5 @@
+ load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
+ load("@rules_python//python:defs.bzl", "py_library")
+-load("@py_deps//:requirements.bzl", "requirement")
+ load("@rules_python//experimental/python:wheel.bzl", "py_package", "py_wheel")
+ load("//:defs.bzl", "anki_version")
+ load("//pylib:orjson.bzl", "orjson_if_available")
+@@ -39,13 +38,6 @@ py_library(
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+- requirement("beautifulsoup4"),
+- requirement("decorator"),
+- requirement("distro"),
+- requirement("protobuf"),
+- requirement("requests"),
+- requirement("flask"),
+- requirement("waitress"),
+ ] + orjson_if_available(),
+ )
+
+@@ -70,6 +62,7 @@ py_wheel(
+ "//platforms:windows_x86_64": "win_amd64",
+ "//platforms:macos_x86_64": "macosx_10_7_x86_64",
+ "//platforms:linux_x86_64": "manylinux2014_x86_64",
++ "//platforms:freebsd_x86_64": "freebsd_x86_64",
+ "//platforms:linux_arm64": "manylinux2014_aarch64",
+ }),
+ python_tag = "cp38",
diff --git a/games/anki/files/patch-pylib_anki___backend_BUILD.bazel b/games/anki/files/patch-pylib_anki___backend_BUILD.bazel
new file mode 100644
index 000000000000..be6c3b4915e5
--- /dev/null
+++ b/games/anki/files/patch-pylib_anki___backend_BUILD.bazel
@@ -0,0 +1,21 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- pylib/anki/_backend/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
++++ pylib/anki/_backend/BUILD.bazel
+@@ -1,5 +1,4 @@
+ load("@rules_python//python:defs.bzl", "py_binary")
+-load("@py_deps//:requirements.bzl", "requirement")
+ load("//pylib:protobuf.bzl", "py_proto_library_typed")
+ load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
+ load("@bazel_skylib//lib:selects.bzl", "selects")
+@@ -27,9 +26,6 @@ py_binary(
+ "genbackend.py",
+ ],
+ deps = [
+- requirement("black"),
+- requirement("stringcase"),
+- requirement("protobuf"),
+ ],
+ )
+
diff --git a/games/anki/files/patch-pylib_orjson.bzl b/games/anki/files/patch-pylib_orjson.bzl
new file mode 100644
index 000000000000..719627a2493c
--- /dev/null
+++ b/games/anki/files/patch-pylib_orjson.bzl
@@ -0,0 +1,15 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- pylib/orjson.bzl.orig 2021-05-04 05:04:50 UTC
++++ pylib/orjson.bzl
+@@ -1,8 +1,7 @@
+-load("@py_deps//:requirements.bzl", "requirement")
+
+ def orjson_if_available():
+ "Include orjson if it's listed in requirements.txt."
+- target = requirement("orjson")
++ target = "not_found"
+ if "not_found" in target:
+ return []
+ else:
diff --git a/games/anki/files/patch-pylib_tools_BUILD.bazel b/games/anki/files/patch-pylib_tools_BUILD.bazel
new file mode 100644
index 000000000000..d2d2dcd0fa8f
--- /dev/null
+++ b/games/anki/files/patch-pylib_tools_BUILD.bazel
@@ -0,0 +1,28 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- pylib/tools/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
++++ pylib/tools/BUILD.bazel
+@@ -1,5 +1,4 @@
+ load("@rules_python//python:defs.bzl", "py_binary", "py_library")
+-load("@py_deps//:requirements.bzl", "requirement")
+
+ py_binary(
+ name = "protoc-gen-mypy",
+@@ -7,7 +6,6 @@ py_binary(
+ visibility = [
+ "//visibility:public",
+ ],
+- deps = [requirement("mypy-protobuf")],
+ )
+
+ py_binary(
+@@ -41,8 +39,6 @@ py_binary(
+ imports = ["."],
+ visibility = ["//pylib:__subpackages__"],
+ deps = [
+- requirement("black"),
+- requirement("stringcase"),
+ ],
+ )
+
diff --git a/games/anki/files/patch-qt_BUILD.bazel b/games/anki/files/patch-qt_BUILD.bazel
new file mode 100644
index 000000000000..a7ae65d55655
--- /dev/null
+++ b/games/anki/files/patch-qt_BUILD.bazel
@@ -0,0 +1,70 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- qt/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
++++ qt/BUILD.bazel
+@@ -1,5 +1,4 @@
+ load("@rules_python//python:defs.bzl", "py_binary", "py_test")
+-load("@py_deps//:requirements.bzl", "requirement")
+
+ py_binary(
+ name = "genhooks_gui",
+@@ -10,8 +9,6 @@ py_binary(
+ visibility = [":__subpackages__"],
+ deps = [
+ "//pylib/tools:hookslib",
+- requirement("black"),
+- requirement("stringcase"),
+ ],
+ )
+
+@@ -32,8 +29,6 @@ py_test(
+ deps = [
+ "//pylib/anki",
+ "//qt/aqt:aqt_without_data",
+- requirement("pytest"),
+- requirement("mock"),
+ ],
+ )
+
+@@ -56,7 +51,6 @@ py_test(
+ "//pylib/anki",
+ "//qt/aqt:aqt_without_data",
+ "@pyqt5//:pkg",
+- requirement("mypy"),
+ ],
+ )
+
+@@ -76,7 +70,6 @@ py_test(
+ deps = [
+ "//pylib/anki",
+ "//qt/aqt:aqt_without_data",
+- requirement("pylint"),
+ "@pyqt5//:pkg",
+ ],
+ )
+@@ -93,8 +86,6 @@ py_test(
+ main = "tests/run_format.py",
+ deps = [
+ "//qt/aqt:aqt_without_data",
+- requirement("black"),
+- requirement("isort"),
+ ],
+ )
+
+@@ -111,8 +102,6 @@ py_binary(
+ main = "tests/run_format.py",
+ tags = ["manual"],
+ deps = [
+- requirement("black"),
+- requirement("isort"),
+ ],
+ )
+
+@@ -134,6 +123,5 @@ py_binary(
+ srcs = ["tools/profile.py"],
+ tags = ["manual"],
+ deps = [
+- requirement("snakeviz"),
+ ],
+ )
diff --git a/games/anki/files/patch-qt_Makefile b/games/anki/files/patch-qt_Makefile
deleted file mode 100644
index 11f41a566dac..000000000000
--- a/games/anki/files/patch-qt_Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-Avoid Python wheel generation in the ".build/build" target as the produced
-wheels won't be used. The Python code will be compiled and installed via
-Port's Makefile.
-
---- qt/Makefile.orig 2020-08-30 01:23:44 UTC
-+++ qt/Makefile
-@@ -35,11 +35,9 @@ PHONY: all
- all: check
-
- .build/run-deps: setup.py
-- python -m pip install -e .
- @touch $@
-
- .build/dev-deps: requirements.dev
-- python -m pip install -r requirements.dev
- @touch $@
-
- .build/ui: $(shell "${FIND}" designer -type f)
-@@ -55,7 +53,7 @@ all: check
- TSDEPS := $(wildcard ts/src/*.ts) $(wildcard ts/scss/*.scss)
-
- .build/js: $(TSDEPS)
-- (cd ts && make build)
-+ (cd ts && %%MAKE_CMD%% build)
- python ./tools/extract_scss_colors.py
- @touch $@
-
-@@ -64,7 +62,7 @@ TSDEPS := $(wildcard ts/src/*.ts) $(wildcard ts/scss/*
- python -m black aqt/gui_hooks.py
- @touch $@
-
--BUILD_STEPS := .build/vernum .build/run-deps .build/dev-deps .build/js .build/ui aqt/buildinfo.py .build/hooks .build/i18n
-+BUILD_STEPS := .build/vernum .build/run-deps .build/dev-deps .build/js .build/ui aqt/buildinfo.py .build/hooks ### NLS ###.build/i18n
-
- # Checking
- ######################
-@@ -137,8 +135,6 @@ build: .build/build
- .build/build: $(BUILD_STEPS) $(CHECKDEPS) $(wildcard ../ts/dist/*)
- rm -rf dist build
- rsync -a ../ts/dist/ aqt_data/web/
-- python setup.py -q bdist_wheel
-- rsync -a dist/*.whl ../dist/
- touch $@
-
- .PHONY: develop
diff --git a/games/anki/files/patch-qt_aqt_BUILD.bazel b/games/anki/files/patch-qt_aqt_BUILD.bazel
new file mode 100644
index 000000000000..58bb874bd8d7
--- /dev/null
+++ b/games/anki/files/patch-qt_aqt_BUILD.bazel
@@ -0,0 +1,35 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- qt/aqt/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
++++ qt/aqt/BUILD.bazel
+@@ -1,6 +1,5 @@
+ load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
+ load("@rules_python//python:defs.bzl", "py_library")
+-load("@py_deps//:requirements.bzl", "requirement")
+ load("@rules_python//experimental/python:wheel.bzl", "py_package", "py_wheel")
+ load("//:defs.bzl", "anki_version")
+
+@@ -42,22 +41,9 @@ aqt_core_data = [
+ ]
+
+ aqt_deps = [
+- requirement("protobuf"),
+- requirement("decorator"),
+- requirement("requests"),
+- requirement("beautifulsoup4"),
+- requirement("flask"),
+- requirement("flask-cors"),
+- requirement("waitress"),
+- requirement("send2trash"),
+- requirement("markdown"),
+- requirement("jsonschema"),
+ "@pyqt5//:pkg",
+ ] + select({
+ "@bazel_tools//src/conditions:host_windows": [
+- requirement("psutil"),
+- requirement("pywin32"),
+- requirement("winrt"),
+ ],
+ "//conditions:default": [],
+ })
diff --git a/games/anki/files/patch-qt_runanki b/games/anki/files/patch-qt_runanki
deleted file mode 100644
index 08100574c58b..000000000000
--- a/games/anki/files/patch-qt_runanki
+++ /dev/null
@@ -1,10 +0,0 @@
---- qt/runanki.orig 2020-08-30 01:23:44 UTC
-+++ qt/runanki
-@@ -1,4 +1,7 @@
- #!/usr/bin/env python3
-
-+import sys
-+sys.path.append("%%DATADIR%%")
-+
- import aqt
- aqt.run()
diff --git a/games/anki/files/patch-rslib_Cargo.toml b/games/anki/files/patch-rslib_Cargo.toml
index ca01e6b172f4..63f02f27d3da 100644
--- a/games/anki/files/patch-rslib_Cargo.toml
+++ b/games/anki/files/patch-rslib_Cargo.toml
@@ -1,19 +1,16 @@
-Avoid vendored OpenSSL dependencies.
+Enable "translations" feature to add the translations from the fluent repos.
---- rslib/Cargo.toml.orig 2020-09-04 08:35:57 UTC
+--- rslib/Cargo.toml.orig 2021-05-04 05:04:50 UTC
+++ rslib/Cargo.toml
-@@ -61,10 +61,10 @@ features = ["trace", "functions", "collation"]
- version = "0.23.1"
- features = ["trace", "functions", "collation", "bundled"]
+@@ -7,6 +7,11 @@ license = "AGPL-3.0-or-later"
+ description = "Anki's Rust library code"
+ build = "build/main.rs"
--[target.'cfg(linux)'.dependencies.reqwest]
--git = "https://github.com/ankitects/reqwest.git"
--rev = "57665e2c2a39db85723ba860f1b570a608bb73f9"
--features = ["json", "socks", "stream", "native-tls-vendored"]
-+#[target.'cfg(linux)'.dependencies.reqwest]
-+#git = "https://github.com/ankitects/reqwest.git"
-+#rev = "57665e2c2a39db85723ba860f1b570a608bb73f9"
-+#features = ["json", "socks", "stream", "native-tls-vendored"]
-
- [target.'cfg(not(linux))'.dependencies.reqwest]
- git = "https://github.com/ankitects/reqwest.git"
++[features]
++default = ["translations"]
++
++translations = []
++
+ [lib]
+ name = "anki"
+ path = "src/lib.rs"
diff --git a/games/anki/files/patch-rspy_Makefile b/games/anki/files/patch-rspy_Makefile
deleted file mode 100644
index ed75c7b29e4b..000000000000
--- a/games/anki/files/patch-rspy_Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-Extract the contents of Python wheel file to Anki's Python library to load it
-directly from that place. The .so file will be used for installation later.
-
-Rust from Ports is used as well so there is no need to bootstrap it via
-"rustup".
-
---- rspy/Makefile.orig 2020-08-30 01:23:44 UTC
-+++ rspy/Makefile
-@@ -71,6 +71,7 @@ build: .build/build
- touch ../proto/backend.proto
- ${BUILD_VARIABLES} \
- maturin build -i "${PYTHON_FILE}" -o "$(OUTDIR)" $(BUILDFLAGS)
-+ %%UNZIP_NATIVE_CMD%% -o -d ../pylib/ `find ../dist/ -name "*.whl"`
- touch $@
-
- check: .build/check
-@@ -87,10 +88,6 @@ clean:
- RUST_TOOLCHAIN := $(shell cat rust-toolchain)
-
- .build/tools: requirements.txt rust-toolchain
-- python -m pip install -r requirements.txt
-- rustup toolchain install $(RUST_TOOLCHAIN)
-- rustup component add rustfmt-preview --toolchain $(RUST_TOOLCHAIN)
-- rustup component add clippy-preview --toolchain $(RUST_TOOLCHAIN)
- @touch $@
-
- # we should not call clippy because it break things when running make check Mac OS
diff --git a/games/anki/files/patch-scripts_BUILD.bazel b/games/anki/files/patch-scripts_BUILD.bazel
new file mode 100644
index 000000000000..d97fc234d3ad
--- /dev/null
+++ b/games/anki/files/patch-scripts_BUILD.bazel
@@ -0,0 +1,10 @@
+Avoid loading of "requirements.bzl" because it requires "pip_import" which
+is already disabled in "defs.bzl".
+
+--- scripts/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
++++ scripts/BUILD.bazel
+@@ -1,4 +1,3 @@
+-load("@py_deps//:requirements.bzl", "requirement")
+
+ py_binary(
+ name = "buildinfo",
diff --git a/games/anki/files/patch-scripts_status.sh b/games/anki/files/patch-scripts_status.sh
new file mode 100644
index 000000000000..00e6545bd3c4
--- /dev/null
+++ b/games/anki/files/patch-scripts_status.sh
@@ -0,0 +1,9 @@
+Use _MY_BUILDHASH which is defined in the Port's Makefile
+
+--- scripts/status.sh.orig 2021-02-15 17:35:54 UTC
++++ scripts/status.sh
+@@ -1,3 +1,3 @@
+ #!/bin/bash
+
+-echo "STABLE_BUILDHASH $(git rev-parse --short=8 HEAD || echo nogit)"
++echo "STABLE_BUILDHASH $(git rev-parse --short=8 HEAD || echo %%_MY_BUILDHASH%%)"
diff --git a/games/anki/pkg-plist b/games/anki/pkg-plist
index 48d85612f54d..ecc695699669 100644
--- a/games/anki/pkg-plist
+++ b/games/anki/pkg-plist
@@ -3,8 +3,6 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/__init__.py
%%DATADIR%%/anki/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
-%%DATADIR%%/anki/__pycache__/backend_pb2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
-%%DATADIR%%/anki/__pycache__/backend_pb2.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/buildinfo.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/buildinfo.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/cards.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -27,10 +25,10 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/__pycache__/exporting.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/find.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/find.cpython-%%PYTHON_SUFFIX%%.pyc
-%%DATADIR%%/anki/__pycache__/fluent_pb2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
-%%DATADIR%%/anki/__pycache__/fluent_pb2.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/hooks.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/hooks.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/anki/__pycache__/hooks_gen.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/anki/__pycache__/hooks_gen.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/httpclient.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/httpclient.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/lang.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -45,10 +43,10 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/__pycache__/notes.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/rsbackend.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/rsbackend.cpython-%%PYTHON_SUFFIX%%.pyc
-%%DATADIR%%/anki/__pycache__/rsbackend_gen.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
-%%DATADIR%%/anki/__pycache__/rsbackend_gen.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/sched.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/sched.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/anki/__pycache__/scheduler.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/anki/__pycache__/scheduler.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/schedv2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/schedv2.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/sound.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -67,15 +65,28 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/__pycache__/tags.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/template.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/template.cpython-%%PYTHON_SUFFIX%%.pyc
-%%DATADIR%%/anki/__pycache__/template_legacy.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
-%%DATADIR%%/anki/__pycache__/template_legacy.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/types.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/types.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/utils.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/utils.cpython-%%PYTHON_SUFFIX%%.pyc
-%%DATADIR%%/anki/backend_pb2.py
-%%DATADIR%%/anki/backend_pb2.pyi
+%%DATADIR%%/anki/_backend/__init__.py
+%%DATADIR%%/anki/_backend/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/anki/_backend/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/anki/_backend/__pycache__/backend_pb2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/anki/_backend/__pycache__/backend_pb2.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/anki/_backend/__pycache__/fluent_pb2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/anki/_backend/__pycache__/fluent_pb2.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/anki/_backend/__pycache__/generated.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/anki/_backend/__pycache__/generated.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/anki/_backend/backend_pb2.py
+%%DATADIR%%/anki/_backend/backend_pb2.pyi
+%%DATADIR%%/anki/_backend/fluent_pb2.py
+%%DATADIR%%/anki/_backend/fluent_pb2.pyi
+%%DATADIR%%/anki/_backend/generated.py
+%%DATADIR%%/anki/_backend/rsbridge.pyi
+%%DATADIR%%/anki/_backend/rsbridge.so
%%DATADIR%%/anki/buildinfo.py
+%%DATADIR%%/anki/buildinfo.txt
%%DATADIR%%/anki/cards.py
%%DATADIR%%/anki/collection.py
%%DATADIR%%/anki/config.py
@@ -86,9 +97,8 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/errors.py
%%DATADIR%%/anki/exporting.py
%%DATADIR%%/anki/find.py
-%%DATADIR%%/anki/fluent_pb2.py
-%%DATADIR%%/anki/fluent_pb2.pyi
%%DATADIR%%/anki/hooks.py
+%%DATADIR%%/anki/hooks_gen.py
%%DATADIR%%/anki/httpclient.py
%%DATADIR%%/anki/importing/__init__.py
%%DATADIR%%/anki/importing/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -124,8 +134,8 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/notes.py
%%DATADIR%%/anki/py.typed
%%DATADIR%%/anki/rsbackend.py
-%%DATADIR%%/anki/rsbackend_gen.py
%%DATADIR%%/anki/sched.py
+%%DATADIR%%/anki/scheduler.py
%%DATADIR%%/anki/schedv2.py
%%DATADIR%%/anki/sound.py
%%DATADIR%%/anki/stats.py
@@ -133,12 +143,16 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/stdmodels.py
%%DATADIR%%/anki/storage.py
%%DATADIR%%/anki/sync.py
+%%DATADIR%%/anki/syncserver/__init__.py
+%%DATADIR%%/anki/syncserver/__main__.py
+%%DATADIR%%/anki/syncserver/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/anki/syncserver/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/anki/syncserver/__pycache__/__main__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/anki/syncserver/__pycache__/__main__.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/tags.py
%%DATADIR%%/anki/template.py
-%%DATADIR%%/anki/template_legacy.py
%%DATADIR%%/anki/types.py
%%DATADIR%%/anki/utils.py
-%%DATADIR%%/ankirspy%%_PY_SONAME%%.so
%%DATADIR%%/aqt/__init__.py
%%DATADIR%%/aqt/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
@@ -150,8 +164,6 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/__pycache__/addons.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/browser.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/browser.cpython-%%PYTHON_SUFFIX%%.pyc
-%%DATADIR%%/aqt/__pycache__/buildinfo.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
-%%DATADIR%%/aqt/__pycache__/buildinfo.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/clayout.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/clayout.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/colors.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -182,6 +194,8 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/__pycache__/fields.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/gui_hooks.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/gui_hooks.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/aqt/__pycache__/hooks_gen.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/aqt/__pycache__/hooks_gen.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/importing.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/importing.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/legacy.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -204,6 +218,8 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/__pycache__/overview.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/pinnedmodules.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/pinnedmodules.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/aqt/__pycache__/platform.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/aqt/__pycache__/platform.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/preferences.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/preferences.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/previewer.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -216,8 +232,12 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/__pycache__/qt.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/reviewer.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/reviewer.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/aqt/__pycache__/scheduling.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/aqt/__pycache__/scheduling.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/schema_change_tracker.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/schema_change_tracker.cpython-%%PYTHON_SUFFIX%%.pyc
+%%DATADIR%%/aqt/__pycache__/sidebar.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
+%%DATADIR%%/aqt/__pycache__/sidebar.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/sound.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/sound.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/stats.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -250,10 +270,112 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/addcards.py
%%DATADIR%%/aqt/addons.py
%%DATADIR%%/aqt/browser.py
-%%DATADIR%%/aqt/buildinfo.py
%%DATADIR%%/aqt/clayout.py
%%DATADIR%%/aqt/colors.py
%%DATADIR%%/aqt/customstudy.py
+%%DATADIR%%/aqt/data/web/css/core.css
+%%DATADIR%%/aqt/data/web/css/deckbrowser.css
+%%DATADIR%%/aqt/data/web/css/editable.css
+%%DATADIR%%/aqt/data/web/css/editor.css
+%%DATADIR%%/aqt/data/web/css/overview.css
+%%DATADIR%%/aqt/data/web/css/reviewer-bottom.css
+%%DATADIR%%/aqt/data/web/css/reviewer.css
+%%DATADIR%%/aqt/data/web/css/toolbar-bottom.css
+%%DATADIR%%/aqt/data/web/css/toolbar.css
+%%DATADIR%%/aqt/data/web/css/webview.css
+%%DATADIR%%/aqt/data/web/imgs/anki-logo-thin.png
+%%DATADIR%%/aqt/data/web/imgs/gears.svg
+%%DATADIR%%/aqt/data/web/imgs/media-record.png
+%%DATADIR%%/aqt/data/web/imgs/more.png
+%%DATADIR%%/aqt/data/web/imgs/paperclip.png
+%%DATADIR%%/aqt/data/web/imgs/refresh.svg
+%%DATADIR%%/aqt/data/web/imgs/text_bold.png
+%%DATADIR%%/aqt/data/web/imgs/text_clear.png
+%%DATADIR%%/aqt/data/web/imgs/text_cloze.png
+%%DATADIR%%/aqt/data/web/imgs/text_italic.png
+%%DATADIR%%/aqt/data/web/imgs/text_sub.png
+%%DATADIR%%/aqt/data/web/imgs/text_super.png
+%%DATADIR%%/aqt/data/web/imgs/text_under.png
+%%DATADIR%%/aqt/data/web/js/deckbrowser.js
+%%DATADIR%%/aqt/data/web/js/editor.js
+%%DATADIR%%/aqt/data/web/js/mathjax.js
+%%DATADIR%%/aqt/data/web/js/overview.js
+%%DATADIR%%/aqt/data/web/js/reviewer-bottom.js
+%%DATADIR%%/aqt/data/web/js/reviewer.js
+%%DATADIR%%/aqt/data/web/js/toolbar.js
+%%DATADIR%%/aqt/data/web/js/vendor/css_browser_selector.min.js
+%%DATADIR%%/aqt/data/web/js/vendor/jquery-ui.min.js
+%%DATADIR%%/aqt/data/web/js/vendor/jquery.min.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/a11y/assistive-mml.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/a11y/complexity.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/a11y/explorer.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/a11y/semantic-enrich.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/action.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/all-packages.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/ams.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/amscd.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/autoload.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/bbox.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/boldsymbol.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/braket.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/bussproofs.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/cancel.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/color.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/colorv2.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/configmacros.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/enclose.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/extpfeil.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/html.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/mhchem.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/newcommand.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/noerrors.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/noundefined.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/physics.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/require.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/tagformat.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/textmacros.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/unicode.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/verb.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/de.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/en.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/es.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/fr.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/nemeth.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/sre-node.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/sre_browser.js
+%%DATADIR%%/aqt/data/web/js/vendor/mathjax/tex-chtml.js
+%%DATADIR%%/aqt/data/web/js/vendor/plot.js
+%%DATADIR%%/aqt/data/web/js/vendor/protobuf.min.js
+%%DATADIR%%/aqt/data/web/js/vendor/protobuf.min.js.map
+%%DATADIR%%/aqt/data/web/js/webview.js
+%%DATADIR%%/aqt/data/web/pages/congrats.html
+%%DATADIR%%/aqt/data/web/pages/congrats.js
+%%DATADIR%%/aqt/data/web/pages/graphs.css
+%%DATADIR%%/aqt/data/web/pages/graphs.html
+%%DATADIR%%/aqt/data/web/pages/graphs.js
%%DATADIR%%/aqt/dbcheck.py
%%DATADIR%%/aqt/deckbrowser.py
%%DATADIR%%/aqt/deckchooser.py
@@ -338,8 +460,6 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/forms/__pycache__/progress.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/forms/__pycache__/reposition.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/forms/__pycache__/reposition.cpython-%%PYTHON_SUFFIX%%.pyc
-%%DATADIR%%/aqt/forms/__pycache__/reschedule.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
-%%DATADIR%%/aqt/forms/__pycache__/reschedule.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/forms/__pycache__/setgroup.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/forms/__pycache__/setgroup.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/forms/__pycache__/setlang.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@@ -389,7 +509,6 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/forms/profiles.py
%%DATADIR%%/aqt/forms/progress.py
%%DATADIR%%/aqt/forms/reposition.py
-%%DATADIR%%/aqt/forms/reschedule.py
%%DATADIR%%/aqt/forms/setgroup.py
%%DATADIR%%/aqt/forms/setlang.py
%%DATADIR%%/aqt/forms/stats.py
@@ -398,6 +517,7 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/forms/taglimit.py
%%DATADIR%%/aqt/forms/template.py
%%DATADIR%%/aqt/gui_hooks.py
+%%DATADIR%%/aqt/hooks_gen.py
%%DATADIR%%/aqt/importing.py
%%DATADIR%%/aqt/legacy.py
%%DATADIR%%/aqt/main.py
@@ -409,6 +529,7 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/mpv.py
%%DATADIR%%/aqt/overview.py
%%DATADIR%%/aqt/pinnedmodules.py
+%%DATADIR%%/aqt/platform.py
%%DATADIR%%/aqt/preferences.py
%%DATADIR%%/aqt/previewer.py
%%DATADIR%%/aqt/profiles.py
@@ -416,7 +537,9 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/py.typed
%%DATADIR%%/aqt/qt.py
%%DATADIR%%/aqt/reviewer.py
+%%DATADIR%%/aqt/scheduling.py
%%DATADIR%%/aqt/schema_change_tracker.py
+%%DATADIR%%/aqt/sidebar.py
%%DATADIR%%/aqt/sound.py
%%DATADIR%%/aqt/stats.py
%%DATADIR%%/aqt/studydeck.py
@@ -431,392 +554,6 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/utils.py
%%DATADIR%%/aqt/webview.py
%%DATADIR%%/aqt/winpaths.py
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/af/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ar/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/bg/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ca/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/cs/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/da/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/de/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/el/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/en-GB/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/eo/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/es/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/et/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/eu/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/fa/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/fi/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/fr/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ga-IE/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/gl/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/he/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/hi-IN/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/hr/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/hu/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/hy-AM/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/it/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ja/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/jbo/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/kab/LC_MESSAGES/anki.mo
-@dir %%NLS%%%%DATADIR%%/aqt_data/locale/gettext/km/LC_MESSAGES
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ko/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/la/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/mn/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/mr/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ms/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/nb-NO/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/nl/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/nn-NO/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/oc/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/or/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/pl/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/pt-BR/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/pt-PT/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ro/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ru/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/sk/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/sl/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/sr/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/sv-SE/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/th/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/tr/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/uk/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/vi/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/zh-CN/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/zh-TW/LC_MESSAGES/anki.mo
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_cs.qm
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_de.qm
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_es.qm
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_fr.qm
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_pt_br.qm
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/am.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ar.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/bg.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/bn.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ca.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/cs.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/da.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/de.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/el.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/en-GB.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/en-US.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/es-419.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/es.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/et.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/fa.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/fi.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/fil.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/fr.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/gu.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/he.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/hi.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/hr.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/hu.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/id.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/it.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ja.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/kn.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ko.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/lt.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/lv.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ml.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/mr.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ms.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/nb.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/nl.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/pl.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/pt-BR.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/pt-PT.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ro.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ru.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sk.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sl.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sr.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sv.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sw.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ta.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/te.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/th.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/tr.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/uk.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/vi.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/zh-CN.pak
-%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/zh-TW.pak
-%%DATADIR%%/aqt_data/web/browsersel.js
-%%DATADIR%%/aqt_data/web/deckbrowser.css
-%%DATADIR%%/aqt_data/web/deckbrowser.js
-%%DATADIR%%/aqt_data/web/editor.css
-%%DATADIR%%/aqt_data/web/editor.js
-%%DATADIR%%/aqt_data/web/graphs.html
-%%DATADIR%%/aqt_data/web/graphs.js
-%%DATADIR%%/aqt_data/web/imgs/anki-logo-thin.png
-%%DATADIR%%/aqt_data/web/imgs/gears.svg
-%%DATADIR%%/aqt_data/web/imgs/media-record.png
-%%DATADIR%%/aqt_data/web/imgs/more.png
-%%DATADIR%%/aqt_data/web/imgs/paperclip.png
-%%DATADIR%%/aqt_data/web/imgs/refresh.svg
-%%DATADIR%%/aqt_data/web/imgs/text_bold.png
-%%DATADIR%%/aqt_data/web/imgs/text_clear.png
-%%DATADIR%%/aqt_data/web/imgs/text_cloze.png
-%%DATADIR%%/aqt_data/web/imgs/text_italic.png
-%%DATADIR%%/aqt_data/web/imgs/text_sub.png
-%%DATADIR%%/aqt_data/web/imgs/text_super.png
-%%DATADIR%%/aqt_data/web/imgs/text_under.png
-%%DATADIR%%/aqt_data/web/jquery-ui.js
-%%DATADIR%%/aqt_data/web/jquery.js
-%%DATADIR%%/aqt_data/web/mathjax/MathJax.js
-%%DATADIR%%/aqt_data/web/mathjax/conf.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/FontWarnings.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/HTML-CSS/handle-floats.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/HelpDialog.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/MatchWebFonts.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/MathEvents.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/MathMenu.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/MathZoom.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/Safe.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/AMScd.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/AMSmath.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/AMSsymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/HTML.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/action.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/autobold.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/autoload-all.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/bbox.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/begingroup.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/boldsymbol.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/cancel.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/color.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/enclose.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/extpfeil.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/mathchoice.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/mediawiki-texvc.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/mhchem.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/mhchem3/mhchem.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/newcommand.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/noErrors.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/noUndefined.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/unicode.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/verb.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/asciimath2jax.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/fast-preview.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/jsMath2jax.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/mhchem.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/mml2jax.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/tex2jax.js
-%%DATADIR%%/aqt_data/web/mathjax/extensions/toMathML.js
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/jax.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/Arrows.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/BasicLatin.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/CombDiactForSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/Dingbats.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/GeneralPunctuation.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/GeometricShapes.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/GreekAndCoptic.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/Latin1Supplement.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/LetterlikeSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MathOperators.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MiscMathSymbolsB.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MiscTechnical.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/SpacingModLetters.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/SuppMathOperators.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/SupplementalArrowsA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/SupplementalArrowsB.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/AsciiMath/config.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/AsciiMath/jax.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/config.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/a.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/b.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/c.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/d.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/e.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/f.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/fr.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/g.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/h.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/i.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/j.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/k.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/l.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/m.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/n.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/o.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/opf.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/p.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/q.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/r.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/s.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/scr.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/t.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/u.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/v.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/w.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/x.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/y.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/z.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/jax.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/TeX/config.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/input/TeX/jax.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/annotation-xml.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/maction.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/menclose.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/mglyph.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/mmultiscripts.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/ms.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/mtable.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/multiline.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/config.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Caligraphic-Bold.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Fraktur-Bold.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Fraktur-Regular.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Main-Bold.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Math-BoldItalic.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Bold.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Italic.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Regular.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Script-Regular.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Typewriter-Regular.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/fontdata-extra.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/fontdata.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/jax.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/annotation-xml.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/maction.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/menclose.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/mglyph.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/mmultiscripts.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/ms.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/mtable.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/multiline.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/config.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinChrome/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/AMS.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/Bold.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/Main.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/imageFonts.js
-%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/jax.js
-%%DATADIR%%/aqt_data/web/overview.css
-%%DATADIR%%/aqt_data/web/overview.js
-%%DATADIR%%/aqt_data/web/plot.js
-%%DATADIR%%/aqt_data/web/reviewer-bottom.css
-%%DATADIR%%/aqt_data/web/reviewer-bottom.js
-%%DATADIR%%/aqt_data/web/reviewer.css
-%%DATADIR%%/aqt_data/web/reviewer.js
-%%DATADIR%%/aqt_data/web/toolbar-bottom.css
-%%DATADIR%%/aqt_data/web/toolbar.css
-%%DATADIR%%/aqt_data/web/toolbar.js
-%%DATADIR%%/aqt_data/web/webview.css
-%%DATADIR%%/aqt_data/web/webview.js
share/applications/anki.desktop
share/pixmaps/anki.png
share/pixmaps/anki.xpm