diff --git a/common.gypi b/common.gypi index a8dbd9ba13e4..f7cdf6059387 100644 --- a/common.gypi +++ b/common.gypi @@ -50,7 +50,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.10', + 'v8_embedder_string': '-node.2', ##### V8 defaults for Node.js ##### diff --git a/deps/crates/Cargo.lock b/deps/crates/Cargo.lock index 2dc90a16afb1..b39204c50515 100644 --- a/deps/crates/Cargo.lock +++ b/deps/crates/Cargo.lock @@ -32,12 +32,12 @@ dependencies = [ "diplomat_core", "proc-macro2", "quote", - "syn 3.0.5", + "syn", ] [[package]] name = "diplomat-runtime" -version = "0.15.2" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -50,7 +50,7 @@ dependencies = [ "serde", "smallvec", "strck", - "syn 3.0.5", + "syn", ] [[package]] @@ -60,19 +60,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn", ] [[package]] name = "icu_calendar" -version = "2.2.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "calendrical_calculations", "displaydoc", "icu_calendar_data", - "icu_locale", "icu_locale_core", + "icu_locale_fallback", "icu_provider", "tinystr", "zerovec", @@ -80,30 +80,29 @@ dependencies = [ [[package]] name = "icu_calendar_data" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "icu_collections" -version = "2.2.0" +name = "icu_locale_core" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", + "litemap", + "serde", + "tinystr", + "writeable", "zerovec", ] [[package]] -name = "icu_locale" -version = "2.2.0" +name = "icu_locale_fallback" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "icu_collections", "icu_locale_core", - "icu_locale_data", + "icu_locale_fallback_data", "icu_provider", "potential_utf", "tinystr", @@ -111,26 +110,13 @@ dependencies = [ ] [[package]] -name = "icu_locale_core" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "displaydoc", - "litemap", - "serde", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locale_data" -version = "2.2.0" +name = "icu_locale_fallback_data" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "icu_provider" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "displaydoc", @@ -146,7 +132,7 @@ dependencies = [ [[package]] name = "ixdtf" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -161,12 +147,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "node_crates" -version = "15.6.75" +version = "15.8.62" dependencies = [ - "icu_locale", "icu_locale_core", "icu_provider", - "syn 3.0.5", + "syn", "temporal_capi", "temporal_rs", ] @@ -238,12 +223,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn", ] [[package]] name = "smallvec" -version = "1.16.1" +version = "1.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -261,17 +246,7 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.119" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", @@ -281,12 +256,12 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn", ] [[package]] @@ -334,7 +309,7 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "displaydoc", @@ -344,12 +319,7 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "utf8_iter" -version = "1.0.4" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -359,7 +329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "yoke" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "stable_deref_trait", @@ -369,12 +339,12 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn", "synstructure", ] @@ -388,12 +358,12 @@ dependencies = [ [[package]] name = "zerofrom-derive" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn", "synstructure", ] @@ -408,7 +378,7 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "serde", @@ -419,12 +389,12 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.6" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn", ] [[package]] diff --git a/deps/crates/Cargo.toml b/deps/crates/Cargo.toml index 1152cae0839d..74ad1a878934 100644 --- a/deps/crates/Cargo.toml +++ b/deps/crates/Cargo.toml @@ -3,23 +3,18 @@ [package] edition = "2021" name = "node_crates" -version = "15.6.75" +version = "15.8.62" rust-version = "1.88" [lib] crate-type = [ "staticlib" ] -[dependencies.icu_locale] -version = "2.2.0" -default-features = false -features = [ "compiled_data" ] - [dependencies.icu_locale_core] -version = "2.2.0" +version = "2.4.0" default-features = false [dependencies.icu_provider] -version = "2.2.0" +version = "2.4.0" default-features = false [dependencies.syn] diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/.cargo_vcs_info.json b/deps/crates/vendor/diplomat-runtime-v0_15/.cargo_vcs_info.json deleted file mode 100644 index a0c309d129a9..000000000000 --- a/deps/crates/vendor/diplomat-runtime-v0_15/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "702b1b2289f40ae45c01068eabb9c229b70827e7" - }, - "path_in_vcs": "runtime" -} \ No newline at end of file diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.lock b/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.lock deleted file mode 100644 index 7ac421c665e5..000000000000 --- a/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.lock +++ /dev/null @@ -1,280 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "bytes" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "diplomat-runtime" -version = "0.15.2" -dependencies = [ - "jni", - "log", -] - -[[package]] -name = "jni" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" -dependencies = [ - "cfg-if", - "combine", - "jni-macros", - "jni-sys", - "log", - "simd_cesu8", - "thiserror", - "walkdir", - "windows-link", -] - -[[package]] -name = "jni-macros" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "simd_cesu8", - "syn", -] - -[[package]] -name = "jni-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" -dependencies = [ - "jni-sys-macros", -] - -[[package]] -name = "jni-sys-macros" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "log" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" - -[[package]] -name = "memchr" -version = "2.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "simd_cesu8" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" -dependencies = [ - "rustc_version", - "simdutf8", -] - -[[package]] -name = "simdutf8" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" - -[[package]] -name = "syn" -version = "2.0.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "winapi-util" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.toml b/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.toml deleted file mode 100644 index bbe1eb243e80..000000000000 --- a/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.toml +++ /dev/null @@ -1,55 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2021" -rust-version = "1.88" -name = "diplomat-runtime" -version = "0.15.2" -authors = [ - "Shadaj Laddad ", - "Manish Goregaokar ", - "Quinn Okabayashi ", -] -build = false -autolib = false -autobins = false -autoexamples = false -autotests = false -autobenches = false -description = "Common runtime utilities used by diplomat codegen" -readme = "README.md" -keywords = [ - "ffi", - "codegen", -] -categories = [ - "development-tools", - "compilers", -] -license = "MIT OR Apache-2.0" -repository = "https://github.com/rust-diplomat/diplomat" - -[features] -jvm-callback-support = ["dep:jni"] -log = ["dep:log"] - -[lib] -name = "diplomat_runtime" -path = "src/lib.rs" - -[dependencies.jni] -version = "0.22" -optional = true - -[dependencies.log] -version = "0.4" -optional = true diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.toml.orig b/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.toml.orig deleted file mode 100644 index 917c213c882c..000000000000 --- a/deps/crates/vendor/diplomat-runtime-v0_15/Cargo.toml.orig +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "diplomat-runtime" -description = "Common runtime utilities used by diplomat codegen" -# We are working on decoupling diplomat-runtime's version from the rest -# https://github.com/rust-diplomat/diplomat/issues/958 -version = "0.15.2" -rust-version.workspace = true -authors.workspace = true -categories.workspace = true -edition.workspace = true -license.workspace = true -repository.workspace = true -keywords.workspace = true -readme = "../README.md" - -[lib] -path = "src/lib.rs" - -[features] -jvm-callback-support = ["dep:jni"] -log = ["dep:log"] - -[dependencies] -jni = { version = "0.22", optional = true } -log = { version = "0.4", optional = true } diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/README.md b/deps/crates/vendor/diplomat-runtime-v0_15/README.md deleted file mode 100644 index 1495091108a1..000000000000 --- a/deps/crates/vendor/diplomat-runtime-v0_15/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Diplomat -Diplomat is a Rust tool for generating FFI definitions allowing many other languages to call Rust code. With Diplomat, you can simply define Rust APIs to be exposed over FFI and get high-level C, C++, and JavaScript bindings automatically! - -Diplomat supports generating bindings from Rust to: -- C -- C++ -- Dart -- Javascript/Typescript -- .NET (C#) -- Kotlin (using JNA) -- Python (using [nanobind](https://nanobind.readthedocs.io/en/latest/index.html)) - -Diplomat supports languages through a plugin interface that makes it easy to add support for your favourite language. See [the book to get started](https://rust-diplomat.github.io/diplomat/developer.html), and `tool/src/{c, cpp, js}` for examples of existing language plugins. - -## Installation -First, install the CLI tool for generating bindings: -```bash -$ cargo install diplomat-tool -``` - -Then, add the Diplomat macro and runtime as dependencies to your project: -```toml -diplomat = "0.10.0" -diplomat-runtime = "0.10.0" -``` - -## Getting Started - -Documentation on how to use Diplomat can be found [in the book](https://rust-diplomat.github.io/diplomat/). - -### Architecture -See the [design doc](docs/design_doc.md) for more details. - -### Building and Testing -Simply run `cargo build` to build all the libraries and compile an example. To run unit tests, run `cargo test`. - -Diplomat makes use of snapshot tests to check macro and code generation logic. When code generation logic changes and the snapshots need to be updated, run `cargo insta review` (run `cargo install cargo-insta` to get the tool) to view the changes and update the snapshots. - -#### Javascript bindings for `wasm32-unknown-unknown` -The Javascript backend assumes that you are building WebAssembly on the C Spec ABI. This is not currently default for the `wasm32-unknown-unknown` target in the latest version of Rust, and so until the [new WASM ABI](https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/) is made stable, you have two options: - -1. Build using nightly Rust and enable the [`-Zwasm-c-abi=spec`](https://doc.rust-lang.org/stable/unstable-book/compiler-flags/wasm-c-abi.html) flag. -1. Configure the JS backend to use legacy bindings. There is a [WASM ABI config option](https://github.com/rust-diplomat/diplomat/blob/main/tool/src/js/mod.rs) for this, please read [the guide on configuration in the book](https://rust-diplomat.github.io/diplomat/config) for more on how to configure. diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/src/lib.rs b/deps/crates/vendor/diplomat-runtime-v0_15/src/lib.rs deleted file mode 100644 index ea7ae826a558..000000000000 --- a/deps/crates/vendor/diplomat-runtime-v0_15/src/lib.rs +++ /dev/null @@ -1,122 +0,0 @@ -#![no_std] - -//! The [Diplomat](https://rust-diplomat.github.io/diplomat/) runtime crate. -//! -//! This crate provides Diplomat-specific types for crates writing `#[diplomat::bridge]` modules. -//! Include this in any crate that also depends on `diplomat`, since `#[diplomat::bridge]` -//! will generate code that relies on types from here. -//! -//! This crate contains a fair number of `DiplomatFoo` types. Some, like -//! [`DiplomatOption`], are FFI-safe versions of Rust types that can be put in -//! a struct and passed safely over FFI. Others, like [`DiplomatChar`], are simple -//! type aliases that signal to the Diplomat tool that particular semantics are desired -//! on the C++ side. -//! -//! # Features -//! -//! The `log` feature enables logging support, currently enabled via the wasm-only `diplomat_init()`. -//! -//! The `jvm-callback-support` feature should be enabled if building Diplomat for use in the JVM, for -//! a Diplomat-based library that uses callbacks. -extern crate alloc; - -use alloc::alloc::Layout; - -#[cfg(all(target_arch = "wasm32", target_os = "unknown"))] -mod wasm_glue; - -mod write; -pub use write::DiplomatWrite; -pub use write::{diplomat_buffer_write_create, diplomat_buffer_write_destroy}; -mod slices; -pub use slices::{ - DiplomatOwnedSlice, DiplomatOwnedStr16Slice, DiplomatOwnedStrSlice, DiplomatOwnedUTF8StrSlice, - DiplomatSlice, DiplomatSliceMut, DiplomatStr16Slice, DiplomatStrSlice, DiplomatUtf8StrSlice, -}; - -mod callback; -pub use callback::DiplomatCallback; - -mod result; -pub use result::{DiplomatOption, DiplomatResult}; - -pub mod rust_interop; - -/// Like [`char`], but unvalidated. -/// -/// This type will usually map to some character type in the target language, and -/// you will not need to worry about the safety of mismatched string invariants. -pub type DiplomatChar = u32; - -/// Like [`str`], but unvalidated. -/// -/// This is a dynamically sized type, it should be used behind an `&` or a `Box` -/// -/// This type will usually map to some string type in the target language, and -/// you will not need to worry about the safety of mismatched string invariants. -pub type DiplomatStr = [u8]; - -/// Like `Wstr`, but unvalidated. -/// -/// This is a dynamically sized type, it should be used behind an `&` or a `Box` -/// -/// This type will usually map to some string type in the target language, and -/// you will not need to worry about the safety of mismatched string invariants. -pub type DiplomatStr16 = [u16]; - -/// Like [`u8`], but interpreted explicitly as a raw byte as opposed to a numerical value. -/// -/// This matters for languages like JavaScript or Dart, where there's only a single numeric -/// type, but special types for byte buffers. -pub type DiplomatByte = u8; - -/// Allocates a buffer of a given size in Rust's memory. -/// -/// Primarily to be called by generated FFI bindings, not Rust code, but is available if needed. -/// -/// # Safety -/// - The allocated buffer must be freed with [`diplomat_free()`]. -#[no_mangle] -pub unsafe extern "C" fn diplomat_alloc(size: usize, align: usize) -> *mut u8 { - alloc::alloc::alloc(Layout::from_size_align(size, align).unwrap()) -} - -/// Frees a buffer that was allocated in Rust's memory. -/// -/// Primarily to be called by generated FFI bindings, not Rust code, but is available if needed. -/// -/// # Safety -/// - `ptr` must be a pointer to a valid buffer allocated by [`diplomat_alloc()`]. -#[no_mangle] -pub unsafe extern "C" fn diplomat_free(ptr: *mut u8, size: usize, align: usize) { - alloc::alloc::dealloc(ptr, Layout::from_size_align(size, align).unwrap()) -} - -/// Frees a `Box<[u8]>` that was returned across FFI as a raw `(ptr, len)` -/// pair (e.g. via `DiplomatOwnedSlice`). -/// -/// Primarily to be called by generated FFI bindings, not Rust code, but is available if needed. -/// -/// # Safety -/// - `ptr`/`len` must be the raw parts of a `Box<[u8]>` that Rust allocated and handed across -/// FFI; this reconstructs that box and drops it, so the same allocator that made it frees it. -/// - Must not be called more than once for the same `ptr`. -#[no_mangle] -pub unsafe extern "C" fn diplomat_owned_slice_u8_destroy(ptr: *mut u8, len: usize) { - if !ptr.is_null() { - drop(alloc::boxed::Box::from_raw( - core::ptr::slice_from_raw_parts_mut(ptr, len), - )); - } -} - -/// Whether a `&[u8]` is a `&str`. -/// -/// Primarily to be called by generated FFI bindings, not Rust code, but is available if needed. -/// -/// # Safety -/// - `ptr` and `size` must be a valid `&[u8]` -#[no_mangle] -pub unsafe extern "C" fn diplomat_is_str(ptr: *const u8, size: usize) -> bool { - core::str::from_utf8(core::slice::from_raw_parts(ptr, size)).is_ok() -} diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/src/rust_interop.rs b/deps/crates/vendor/diplomat-runtime-v0_15/src/rust_interop.rs deleted file mode 100644 index d1b20122e921..000000000000 --- a/deps/crates/vendor/diplomat-runtime-v0_15/src/rust_interop.rs +++ /dev/null @@ -1,79 +0,0 @@ -//! Types for interfacing with Diplomat FFI APIs from Rust. -//! -//! By and large, Diplomat helps you produce a Rust-written library that can be called from other -//! languages. You write the library in Rust, but interact with the Diplomat-wrapped library -//! in a non-Rust language. -//! -//! However, either for debugging purposes, or for extending the library in custom ways, you may find -//! yourself wanting to work with the Diplomat-wrapped library from Rust. This module contains -//! utilities for doing that. - -use crate::diplomat_buffer_write_create; -use crate::diplomat_buffer_write_destroy; -use crate::DiplomatWrite; -use core::borrow::Borrow; - -/// A [`DiplomatWrite`] backed by a `Vec`, for convenient use in Rust. -pub struct RustWriteVec { - /// Safety Invariant: must have been created by diplomat_buffer_write_create() - ptr: *mut DiplomatWrite, -} - -impl RustWriteVec { - /// Creates a new [`RustWriteVec`] with the given initial buffer capacity. - pub fn with_capacity(cap: usize) -> Self { - Self { - ptr: diplomat_buffer_write_create(cap), - } - } - - /// Borrows the underlying [`DiplomatWrite`]. - #[allow(clippy::should_implement_trait)] // the trait is also implemented - pub fn borrow(&self) -> &DiplomatWrite { - // Safety: the pointer is valid because the Drop impl hasn't been called yet. - unsafe { &*self.ptr } - } - - /// Mutably borrows the underlying [`DiplomatWrite`]. - /// - /// # Safety - /// The contents of the returned pointer MUST NOT be swapped with another instance - /// of [`DiplomatWrite`] that may have been created from a different source. This - /// requirement is satisfied if this is the only instance of [`DiplomatWrite`] - /// in scope. - /// - /// For more information, see [`DiplomatWrite`]. - pub unsafe fn borrow_mut(&mut self) -> &mut DiplomatWrite { - // Safety: the pointer is valid because the Drop impl hasn't been called yet. - unsafe { &mut *self.ptr } - } -} - -impl Borrow for RustWriteVec { - fn borrow(&self) -> &DiplomatWrite { - self.borrow() - } -} - -impl Drop for RustWriteVec { - fn drop(&mut self) { - // Safety: by invariant, ptr was created by diplomat_buffer_write_create() - unsafe { diplomat_buffer_write_destroy(self.ptr) } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use core::fmt::Write; - - #[test] - fn test_rust_write() { - let mut buffer = RustWriteVec::with_capacity(5); - // Safety: this is the only instance of `DiplomatWrite` in scope. - unsafe { buffer.borrow_mut() } - .write_str("Hello World") - .unwrap(); - assert_eq!(buffer.borrow().as_bytes(), b"Hello World"); - } -} diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/src/write.rs b/deps/crates/vendor/diplomat-runtime-v0_15/src/write.rs deleted file mode 100644 index 1d6400680d2e..000000000000 --- a/deps/crates/vendor/diplomat-runtime-v0_15/src/write.rs +++ /dev/null @@ -1,270 +0,0 @@ -use alloc::boxed::Box; -use alloc::vec::Vec; -use core::ffi::c_void; -use core::{fmt, ptr}; - -/// An object that can one can write UTF-8 strings to -/// -/// This allows the C API to write to arbitrary kinds of objects, for example a -/// C++ std::string or a char buffer. -/// -/// The way to use this object is to fill out the `buf`, `len`, `cap` fields with -/// appropriate values for the buffer, its current length, and its current capacity, -/// and `flush` and `grow` with appropriate callbacks (using `context` to reference any -/// state they need). This object will be passed by mutable reference to the Rust side, -/// and Rust will write to it, calling `grow()` as necessary. Once done, it will call `flush()` -/// to update any state on `context` (e.g. adding a null terminator, updating the length). -/// The object on the foreign side will be directly usable after this, the foreign side -/// need not perform additional state updates after passing an [`DiplomatWrite`] to -/// a function. -/// -/// May be extended in the future to support further invariants -/// -/// DiplomatWrite will not perform any cleanup on `context` or `buf`, these are logically -/// "borrows" from the FFI side. -/// -/// # DiplomatWrite is Polymorphic -/// -/// Instances of [`DiplomatWrite`] can be created from multiple different sources. -/// There are two constructors available in `diplomat_runtime`: -/// -/// 1. [`diplomat_simple_write()`] to write to a fixed-size buffer. -/// 2. [`diplomat_buffer_write_create()`] to write to a Vec allocated by Rust. -/// A wrapper is provided: [`RustWriteVec`](rust_interop::RustWriteVec). -/// -/// Backends may have additional constructors for writing to various shapes of buffer. -/// -/// ⚠️ Because [`DiplomatWrite`] is polymorphic, the destructor must know how the instance -/// was constructed. It is therefore unsound to use functions such as [`core::mem::swap`] -/// on instances of [`DiplomatWrite`] with potentially different sources. For example, -/// the following code is not safe: -/// -/// ```no_run -/// use diplomat_runtime::DiplomatWrite; -/// fn bad(write: &mut DiplomatWrite) { -/// let mut some_other_write: DiplomatWrite = unimplemented!(); -/// // Not safe! The two `DiplomatWrite`s have different invariants -/// core::mem::swap(write, &mut some_other_write); -/// } -/// ``` -/// -/// As a result, any function that returns an owned `DiplomatWrite` or a `&mut DiplomatWrite` -/// must be `unsafe`. For an example, see [`RustWriteVec::borrow_mut`]. -/// -/// Diplomat backends guarantee they will only ever hand the same type of `DiplomatWrite` object to Rust -/// code; this is only something you need to worry about if using [`RustWriteVec`](rust_interop::RustWriteVec), -/// or `DiplomatWrite` objects manually created in Rust via APIs like `diplomat_simple_write`. -/// -/// # Safety invariants: -/// - `flush()` and `grow()` will be passed `self` including `context` and it should always be safe to do so. -/// `context` may be null, however `flush()` and `grow()` must then be ready to receive it as such. -/// - `buf` must be a valid pointer to `cap` bytes of memory -/// - `buf` must point to `len` consecutive properly initialized bytes -/// - `cap` must be less than or equal to isize::MAX -/// - `grow()` must either return false or update `buf` and `cap` for a valid buffer -/// of at least the requested buffer size. -/// - If grow_failed is true all safety invariants on buf/cap/len MUST still hold. -/// - `DiplomatWrite::flush()` will be automatically called by Diplomat. `flush()` might also be called -/// (erroneously) on the Rust side (it's a public method), so it must be idempotent. -#[repr(C)] -pub struct DiplomatWrite { - /// Context pointer for additional data needed by `grow()` and `flush()`. May be `null`. - /// - /// The pointer may reference structured data on the foreign side, - /// such as C++ std::string, used to reallocate buf. - context: *mut c_void, - /// The raw string buffer, which will be mutated on the Rust side. - buf: *mut u8, - /// The current filled size of the buffer - len: usize, - /// The current capacity of the buffer - cap: usize, - /// Set to true if `grow` ever fails. - grow_failed: bool, - /// Called by Rust to indicate that there is no more data to write. - /// - /// May be called multiple times. - /// - /// Arguments: - /// - `self` (`*mut DiplomatWrite`): This `DiplomatWrite` - flush: extern "C" fn(*mut DiplomatWrite), - /// Called by Rust to request more capacity in the buffer. The implementation should allocate a new - /// buffer and copy the contents of the old buffer into the new buffer, updating `self.buf` and `self.cap` - /// - /// Arguments: - /// - `self` (`*mut DiplomatWrite`): This `DiplomatWrite` - /// - `capacity` (`usize`): The requested capacity. - /// - /// Returns: `true` if the allocation succeeded. Should not update any state if it failed. - grow: extern "C" fn(*mut DiplomatWrite, usize) -> bool, -} - -impl DiplomatWrite { - /// Call this function before releasing the buffer to C - pub fn flush(&mut self) { - (self.flush)(self); - } - - /// Returns a pointer to the buffer's bytes. - /// - /// If growth has failed, this returns what has been written so far. - pub fn as_bytes(&self) -> &[u8] { - if self.buf.is_null() { - return &[]; - } - debug_assert!(self.len <= self.cap); - // Safety checklist, assuming this struct's safety invariants: - // 1. `buf` is a valid pointer and not null - // 2. `buf` points to `len` consecutive properly initialized bytes - // 3. `buf` won't be mutated because it is only directly accessible via - // `diplomat_buffer_write_get_bytes`, whose safety invariant states - // that the bytes cannot be mutated while borrowed - // can only be dereferenced using unsafe code - // 4. `buf`'s total size is no larger than isize::MAX - unsafe { core::slice::from_raw_parts(self.buf, self.len) } - } -} -impl fmt::Write for DiplomatWrite { - fn write_str(&mut self, s: &str) -> Result<(), fmt::Error> { - if self.grow_failed { - return Ok(()); - } - let needed_len = self.len + s.len(); - if needed_len > self.cap { - let success = (self.grow)(self, needed_len); - if !success { - self.grow_failed = true; - return Ok(()); - } - } - debug_assert!(needed_len <= self.cap); - unsafe { - ptr::copy_nonoverlapping(s.as_bytes().as_ptr(), self.buf.add(self.len), s.len()); - } - self.len = needed_len; - Ok(()) - } -} - -/// Create an `DiplomatWrite` that can write to a fixed-length stack allocated `u8` buffer. -/// -/// Once done, this will append a null terminator to the written string. -/// -/// This is largely used internally by Diplomat-generated FFI code, and should not need to be constructed -/// manually outside of that context. See [`RustWriteVec`](rust_interop::RustWriteVec) if you need this in Rust. -/// -/// # Safety -/// -/// - `buf` must be a valid pointer to a region of memory that can hold at `buf_size` bytes -#[no_mangle] -pub unsafe extern "C" fn diplomat_simple_write(buf: *mut u8, buf_size: usize) -> DiplomatWrite { - extern "C" fn grow(_this: *mut DiplomatWrite, _cap: usize) -> bool { - false - } - extern "C" fn flush(this: *mut DiplomatWrite) { - unsafe { - debug_assert!((*this).len <= (*this).cap); - let buf = (*this).buf; - ptr::write(buf.add((*this).len), 0) - } - } - DiplomatWrite { - context: ptr::null_mut(), - buf, - len: 0, - grow_failed: false, - // keep an extra byte in our pocket for the null terminator - cap: buf_size - 1, - flush, - grow, - } -} - -/// Create an [`DiplomatWrite`] that can write to a dynamically allocated buffer managed by Rust. -/// -/// Use [`diplomat_buffer_write_destroy()`] to free the writable and its underlying buffer. -/// The pointer is valid until that function is called. -/// -/// This is largely used internally by Diplomat-generated FFI code, and should not need to be constructed -/// manually outside of that context. See [`RustWriteVec`](rust_interop::RustWriteVec) if you need this in Rust. -/// -/// The grow impl never sets `grow_failed`, although it is possible for it to panic. -#[no_mangle] -pub extern "C" fn diplomat_buffer_write_create(cap: usize) -> *mut DiplomatWrite { - extern "C" fn grow(this: *mut DiplomatWrite, new_cap: usize) -> bool { - unsafe { - let this = this.as_mut().unwrap(); - let mut vec = Vec::from_raw_parts(this.buf, 0, this.cap); - vec.reserve(new_cap); - this.cap = vec.capacity(); - this.buf = vec.as_mut_ptr(); - core::mem::forget(vec); - } - true - } - - extern "C" fn flush(_: *mut DiplomatWrite) {} - - let mut vec = Vec::::with_capacity(cap); - let ret = DiplomatWrite { - context: ptr::null_mut(), - buf: vec.as_mut_ptr(), - len: 0, - grow_failed: false, - cap, - flush, - grow, - }; - - core::mem::forget(vec); - Box::into_raw(Box::new(ret)) -} - -/// Grabs a pointer to the underlying buffer of a writable. -/// -/// Returns null if there was an allocation error during the write construction. -/// -/// # Safety -/// - The returned pointer is valid until the passed writable is destroyed. -/// - The returned pointer is valid for both reads and writes, however Rust code -/// may not write to it if `this` is being accessed by other methods simultaneously. -/// - `this` must be a pointer to a valid [`DiplomatWrite`] constructed by -/// [`diplomat_buffer_write_create()`]. -#[no_mangle] -pub extern "C" fn diplomat_buffer_write_get_bytes(this: *mut DiplomatWrite) -> *mut u8 { - let this = unsafe { &*this }; - if this.grow_failed { - core::ptr::null_mut() - } else { - this.buf - } -} - -/// Gets the length in bytes of the content written to the writable. -/// -/// Returns 0 if there was an allocation error during the write construction. -/// -/// # Safety -/// - `this` must be a pointer to a valid [`DiplomatWrite`] constructed by -/// [`diplomat_buffer_write_create()`]. -#[no_mangle] -pub extern "C" fn diplomat_buffer_write_len(this: &DiplomatWrite) -> usize { - if this.grow_failed { - 0 - } else { - this.len - } -} - -/// Destructor for Rust-memory backed writables. -/// -/// # Safety -/// - `this` must be a pointer to a valid [`DiplomatWrite`] constructed by -/// [`diplomat_buffer_write_create()`]. -#[no_mangle] -pub unsafe extern "C" fn diplomat_buffer_write_destroy(this: *mut DiplomatWrite) { - let this = Box::from_raw(this); - let vec = Vec::from_raw_parts(this.buf, 0, this.cap); - drop(vec); - drop(this); -} diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/.cargo-checksum.json b/deps/crates/vendor/diplomat-runtime-v0_16/.cargo-checksum.json similarity index 100% rename from deps/crates/vendor/diplomat-runtime-v0_15/.cargo-checksum.json rename to deps/crates/vendor/diplomat-runtime-v0_16/.cargo-checksum.json diff --git a/deps/crates/vendor/diplomat-runtime-v0_16/.cargo_vcs_info.json b/deps/crates/vendor/diplomat-runtime-v0_16/.cargo_vcs_info.json new file mode 100644 index 000000000000..1322e829c0bc --- /dev/null +++ b/deps/crates/vendor/diplomat-runtime-v0_16/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "0cca8412630402302b4bd720842101b144a3e18d" + }, + "path_in_vcs": "runtime" +} \ No newline at end of file diff --git a/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.lock b/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.lock new file mode 100644 index 000000000000..e98610440d8a --- /dev/null +++ b/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.lock @@ -0,0 +1,280 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "diplomat-runtime" +version = "0.16.1" +dependencies = [ + "jni", + "log", +] + +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys", + "log", + "simd_cesu8", + "thiserror", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "memchr" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "syn" +version = "2.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "winapi-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" diff --git a/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.toml b/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.toml new file mode 100644 index 000000000000..f1dd6070f02c --- /dev/null +++ b/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.toml @@ -0,0 +1,55 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2021" +rust-version = "1.88" +name = "diplomat-runtime" +version = "0.16.1" +authors = [ + "Shadaj Laddad ", + "Manish Goregaokar ", + "Quinn Okabayashi ", +] +build = false +autolib = false +autobins = false +autoexamples = false +autotests = false +autobenches = false +description = "Common runtime utilities used by diplomat codegen" +readme = "README.md" +keywords = [ + "ffi", + "codegen", +] +categories = [ + "development-tools", + "compilers", +] +license = "MIT OR Apache-2.0" +repository = "https://github.com/rust-diplomat/diplomat" + +[features] +jvm-callback-support = ["dep:jni"] +log = ["dep:log"] + +[lib] +name = "diplomat_runtime" +path = "src/lib.rs" + +[dependencies.jni] +version = "0.22" +optional = true + +[dependencies.log] +version = "0.4" +optional = true diff --git a/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.toml.orig b/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.toml.orig new file mode 100644 index 000000000000..07a1874feece --- /dev/null +++ b/deps/crates/vendor/diplomat-runtime-v0_16/Cargo.toml.orig @@ -0,0 +1,25 @@ +[package] +name = "diplomat-runtime" +description = "Common runtime utilities used by diplomat codegen" +# We are working on decoupling diplomat-runtime's version from the rest +# https://github.com/rust-diplomat/diplomat/issues/958 +version = "0.16.1" +rust-version.workspace = true +authors.workspace = true +categories.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +keywords.workspace = true +readme = "../README.md" + +[lib] +path = "src/lib.rs" + +[features] +jvm-callback-support = ["dep:jni"] +log = ["dep:log"] + +[dependencies] +jni = { version = "0.22", optional = true } +log = { version = "0.4", optional = true } diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/LICENSE-APACHE b/deps/crates/vendor/diplomat-runtime-v0_16/LICENSE-APACHE similarity index 100% rename from deps/crates/vendor/diplomat-runtime-v0_15/LICENSE-APACHE rename to deps/crates/vendor/diplomat-runtime-v0_16/LICENSE-APACHE diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/LICENSE-MIT b/deps/crates/vendor/diplomat-runtime-v0_16/LICENSE-MIT similarity index 100% rename from deps/crates/vendor/diplomat-runtime-v0_15/LICENSE-MIT rename to deps/crates/vendor/diplomat-runtime-v0_16/LICENSE-MIT diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/OWNERS b/deps/crates/vendor/diplomat-runtime-v0_16/OWNERS similarity index 100% rename from deps/crates/vendor/diplomat-runtime-v0_15/OWNERS rename to deps/crates/vendor/diplomat-runtime-v0_16/OWNERS diff --git a/deps/crates/vendor/diplomat-runtime-v0_16/README.md b/deps/crates/vendor/diplomat-runtime-v0_16/README.md new file mode 100644 index 000000000000..01cc1a2e2faa --- /dev/null +++ b/deps/crates/vendor/diplomat-runtime-v0_16/README.md @@ -0,0 +1,43 @@ +# Diplomat +Diplomat is a Rust tool for generating FFI definitions allowing many other languages to call Rust code. With Diplomat, you can simply define Rust APIs to be exposed over FFI and get high-level C, C++, and JavaScript bindings automatically! + +Diplomat supports generating bindings from Rust to: +- C +- C++ +- Dart +- Javascript/Typescript +- .NET (C#) +- Kotlin (using JNA) +- Python (using [nanobind](https://nanobind.readthedocs.io/en/latest/index.html)) + +Diplomat supports languages through a plugin interface that makes it easy to add support for your favourite language. See [the book to get started](https://rust-diplomat.github.io/diplomat/developer.html), and `tool/src/{c, cpp, js}` for examples of existing language plugins. + +## Installation +First, install the CLI tool for generating bindings: +```bash +$ cargo install diplomat-tool +``` + +Then, add the Diplomat macro and runtime as dependencies to your project: +```toml +diplomat = "0.17.0" +diplomat-runtime = "0.16.1" +``` + +## Getting Started + +Documentation on how to use Diplomat can be found [in the book](https://rust-diplomat.github.io/diplomat/). + +### Architecture +See the [design doc](docs/design_doc.md) for more details. + +### Building and Testing +Simply run `cargo build` to build all the libraries and compile an example. To run unit tests, run `cargo test`. + +Diplomat makes use of snapshot tests to check macro and code generation logic. When code generation logic changes and the snapshots need to be updated, run `cargo insta review` (run `cargo install cargo-insta` to get the tool) to view the changes and update the snapshots. + +#### Javascript bindings for `wasm32-unknown-unknown` +The Javascript backend assumes that you are building WebAssembly on the C Spec ABI. This is not currently default for the `wasm32-unknown-unknown` target in the latest version of Rust, and so until the [new WASM ABI](https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/) is made stable, you have two options: + +1. Build using nightly Rust and enable the [`-Zwasm-c-abi=spec`](https://doc.rust-lang.org/stable/unstable-book/compiler-flags/wasm-c-abi.html) flag. +1. Configure the JS backend to use legacy bindings. There is a [WASM ABI config option](https://github.com/rust-diplomat/diplomat/blob/main/tool/src/js/mod.rs) for this, please read [the guide on configuration in the book](https://rust-diplomat.github.io/diplomat/config) for more on how to configure. diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/src/callback.rs b/deps/crates/vendor/diplomat-runtime-v0_16/src/callback.rs similarity index 100% rename from deps/crates/vendor/diplomat-runtime-v0_15/src/callback.rs rename to deps/crates/vendor/diplomat-runtime-v0_16/src/callback.rs diff --git a/deps/crates/vendor/diplomat-runtime-v0_16/src/lib.rs b/deps/crates/vendor/diplomat-runtime-v0_16/src/lib.rs new file mode 100644 index 000000000000..32e1777a2c62 --- /dev/null +++ b/deps/crates/vendor/diplomat-runtime-v0_16/src/lib.rs @@ -0,0 +1,147 @@ +#![no_std] + +//! The [Diplomat](https://rust-diplomat.github.io/diplomat/) runtime crate. +//! +//! This crate provides Diplomat-specific types for crates writing `#[diplomat::bridge]` modules. +//! Include this in any crate that also depends on `diplomat`, since `#[diplomat::bridge]` +//! will generate code that relies on types from here. +//! +//! # Type Overview +//! +//! - **Option and Result**: [`DiplomatResult`] (FFI-safe `Result`) and [`DiplomatOption`] (type alias for [`DiplomatResult`]). +//! - **Slices**: [`DiplomatSlice<'a, T>`] (`&'a [T]`), [`DiplomatSliceMut<'a, T>`] (`&'a mut [T]`), and [`DiplomatOwnedSlice`] (`Box<[T]>`). +//! - **String input**: These all map to appropriate string types across FFI. +//! - Unvalidated UTF-8: [`DiplomatStrSlice<'a>`] (`&'a [u8]`), [`DiplomatOwnedStrSlice`] (`Box<[u8]>`) +//! - Unvalidated UTF-16: [`DiplomatStr16Slice<'a>`] (`&'a [u16]`), [`DiplomatOwnedStr16Slice`] (`Box<[u16]>`) +//! - Validated UTF-8: [`DiplomatUtf8StrSlice<'a>`] (`&'a str`), [`DiplomatOwnedUTF8StrSlice`] (`Box`) +//! - Unvalidated stringy DSTs: [`DiplomatStr`] (`[u8]`), [`DiplomatStr16`] (`[u16]`), for convenient use with `&` and `Box` as function parameters. +//! - **String output**: [`DiplomatWrite`] and [`DiplomatWrite16`] +//! - **Primitive buffer output**: [`DiplomatWriteGeneric`] +//! - **Callbacks**: [`DiplomatCallback`] (FFI-safe callback handle). +//! - **Scalars**: [`DiplomatChar`] (`u32`) and [`DiplomatByte`] (`u8`). +//! +//! Note that many of these are type aliases; using these types instead of the type alias signals that Diplomat is expected to +//! generate the equivalent type on the other side. For example, using `DiplomatChar` will signal that a language's `char` type is +//! to be used, even if the actual type seen by rust is an unvalidated `u32`. +//! +//! # Features +//! +//! The `log` feature enables logging support, currently enabled via the wasm-only `diplomat_init()`. +//! +//! The `jvm-callback-support` feature should be enabled if building Diplomat for use in the JVM, for +//! a Diplomat-based library that uses callbacks. + +extern crate alloc; + +use alloc::alloc::Layout; + +#[cfg(all(target_arch = "wasm32", target_os = "unknown"))] +mod wasm_glue; + +mod write; +pub use write::{ + diplomat_buffer_write_create, diplomat_buffer_write_destroy, diplomat_simple_write, + DiplomatAbiCompatible, DiplomatWrite, DiplomatWrite16, DiplomatWriteGeneric, +}; +mod slices; +pub use slices::{ + DiplomatOwnedSlice, DiplomatOwnedStr16Slice, DiplomatOwnedStrSlice, DiplomatOwnedUTF8StrSlice, + DiplomatSlice, DiplomatSliceMut, DiplomatStr16Slice, DiplomatStrSlice, DiplomatUtf8StrSlice, +}; + +mod callback; +pub use callback::DiplomatCallback; + +mod result; +pub use result::{DiplomatOption, DiplomatResult}; + +pub mod rust_interop; + +/// Like [`char`], but unvalidated. +/// +/// This type will usually map to some character type in the target language, and +/// you will not need to worry about the safety of mismatched string invariants. +pub type DiplomatChar = u32; + +/// Like [`str`], but unvalidated. +/// +/// This is a dynamically sized type, it should be used behind an `&` or a `Box` +/// +/// This type will usually map to some string type in the target language, and +/// you will not need to worry about the safety of mismatched string invariants. +/// +/// [`DiplomatStrSlice`] is equivalent to `&DiplomatStr`: both are provided since +/// `&DiplomatStr` is more convenient but not allowed in Diplomat structs (since it +/// is not directly FFI safe). Instead, this type can be conveniently used in function +/// parameter lists. +pub type DiplomatStr = [u8]; + +/// Like `Wstr`, but unvalidated. +/// +/// This is a dynamically sized type, it should be used behind an `&` or a `Box` +/// +/// This type will usually map to some string type in the target language, and +/// you will not need to worry about the safety of mismatched string invariants. +/// +/// [`DiplomatStr16Slice`] is equivalent to `&DiplomatStr16`: both are provided since +/// `&DiplomatStr16` is more convenient but not allowed in Diplomat structs (since it +/// is not directly FFI safe). Instead, this type can be conveniently used in function +/// parameter lists. +pub type DiplomatStr16 = [u16]; + +/// Like [`u8`], but interpreted explicitly as a raw byte as opposed to a numerical value. +/// +/// This matters for languages like JavaScript or Dart, where there's only a single numeric +/// type, but special types for byte buffers. +pub type DiplomatByte = u8; + +/// Allocates a buffer of a given size in Rust's memory. +/// +/// Primarily to be called by generated FFI bindings, not Rust code, but is available if needed. +/// +/// # Safety +/// - The allocated buffer must be freed with [`diplomat_free()`]. +#[no_mangle] +pub unsafe extern "C" fn diplomat_alloc(size: usize, align: usize) -> *mut u8 { + alloc::alloc::alloc(Layout::from_size_align(size, align).unwrap()) +} + +/// Frees a buffer that was allocated in Rust's memory. +/// +/// Primarily to be called by generated FFI bindings, not Rust code, but is available if needed. +/// +/// # Safety +/// - `ptr` must be a pointer to a valid buffer allocated by [`diplomat_alloc()`]. +#[no_mangle] +pub unsafe extern "C" fn diplomat_free(ptr: *mut u8, size: usize, align: usize) { + alloc::alloc::dealloc(ptr, Layout::from_size_align(size, align).unwrap()) +} + +/// Frees a `Box<[u8]>` that was returned across FFI as a raw `(ptr, len)` +/// pair (e.g. via `DiplomatOwnedSlice`). +/// +/// Primarily to be called by generated FFI bindings, not Rust code, but is available if needed. +/// +/// # Safety +/// - `ptr`/`len` must be the raw parts of a `Box<[u8]>` that Rust allocated and handed across +/// FFI; this reconstructs that box and drops it, so the same allocator that made it frees it. +/// - Must not be called more than once for the same `ptr`. +#[no_mangle] +pub unsafe extern "C" fn diplomat_owned_slice_u8_destroy(ptr: *mut u8, len: usize) { + if !ptr.is_null() { + drop(alloc::boxed::Box::from_raw( + core::ptr::slice_from_raw_parts_mut(ptr, len), + )); + } +} + +/// Whether a `&[u8]` is a `&str`. +/// +/// Primarily to be called by generated FFI bindings, not Rust code, but is available if needed. +/// +/// # Safety +/// - `ptr` and `size` must be a valid `&[u8]` +#[no_mangle] +pub unsafe extern "C" fn diplomat_is_str(ptr: *const u8, size: usize) -> bool { + core::str::from_utf8(core::slice::from_raw_parts(ptr, size)).is_ok() +} diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/src/result.rs b/deps/crates/vendor/diplomat-runtime-v0_16/src/result.rs similarity index 86% rename from deps/crates/vendor/diplomat-runtime-v0_15/src/result.rs rename to deps/crates/vendor/diplomat-runtime-v0_16/src/result.rs index 5f20930d7904..21a64809e0ae 100644 --- a/deps/crates/vendor/diplomat-runtime-v0_15/src/result.rs +++ b/deps/crates/vendor/diplomat-runtime-v0_16/src/result.rs @@ -13,16 +13,33 @@ union DiplomatResultValue { #[repr(C)] pub struct DiplomatResult { value: DiplomatResultValue, + /// Whether the result is `Ok`. + /// + /// Note: Mutating this field directly in Rust is unsound, and this field will become + /// private in `diplomat-runtime` 1.0 ([#1239](https://github.com/rust-diplomat/diplomat/issues/1239)). + /// Prefer calling [`DiplomatResult::is_ok()`] or [`DiplomatResult::is_err()`]. pub is_ok: bool, } -/// A type to represent Option over FFI. +/// A type to represent `Option` over FFI. /// /// Used internally to handle `Option` arguments and return types, and needs to be /// used explicitly for optional struct fields. pub type DiplomatOption = DiplomatResult; impl DiplomatResult { + /// Returns `true` if the result is `Ok`. + #[inline] + pub const fn is_ok(&self) -> bool { + self.is_ok + } + + /// Returns `true` if the result is `Err`. + #[inline] + pub const fn is_err(&self) -> bool { + !self.is_ok + } + pub fn as_ref(&self) -> Result<&T, &E> { // Safety: we're only accessing the union variants when the flag is correct unsafe { diff --git a/deps/crates/vendor/diplomat-runtime-v0_16/src/rust_interop.rs b/deps/crates/vendor/diplomat-runtime-v0_16/src/rust_interop.rs new file mode 100644 index 000000000000..5461ee60ee8d --- /dev/null +++ b/deps/crates/vendor/diplomat-runtime-v0_16/src/rust_interop.rs @@ -0,0 +1,228 @@ +//! Types for interfacing with Diplomat FFI APIs from Rust. +//! +//! By and large, Diplomat helps you produce a Rust-written library that can be called from other +//! languages. You write the library in Rust, but interact with the Diplomat-wrapped library +//! in a non-Rust language. +//! +//! However, either for debugging purposes, or for extending the library in custom ways, you may find +//! yourself wanting to work with the Diplomat-wrapped library from Rust. This module contains +//! utilities for doing that. + +use crate::diplomat_buffer_write_create; +use crate::diplomat_buffer_write_destroy; +use crate::DiplomatAbiCompatible; +use crate::DiplomatWrite; +use crate::DiplomatWriteGeneric; +use alloc::vec::Vec; +use core::borrow::Borrow; +use core::marker::PhantomData; +use core::mem::ManuallyDrop; +use core::ptr; + +/// A [`DiplomatWrite`] backed by a `Vec`, for convenient use in Rust. +pub struct RustWriteVec { + /// Safety Invariant: must have been created by diplomat_buffer_write_create() + ptr: *mut DiplomatWrite, +} + +impl RustWriteVec { + /// Creates a new [`RustWriteVec`] with the given initial buffer capacity. + pub fn with_capacity(cap: usize) -> Self { + Self { + ptr: diplomat_buffer_write_create(cap), + } + } + + /// Borrows the underlying [`DiplomatWrite`]. + #[allow(clippy::should_implement_trait)] // the trait is also implemented + pub fn borrow(&self) -> &DiplomatWrite { + // Safety: the pointer is valid because the Drop impl hasn't been called yet. + unsafe { &*self.ptr } + } + + /// Mutably borrows the underlying [`DiplomatWrite`]. + /// + /// # Safety + /// The contents of the returned pointer MUST NOT be swapped with another instance + /// of [`DiplomatWrite`] that may have been created from a different source. This + /// requirement is satisfied if this is the only instance of [`DiplomatWrite`] + /// in scope. + /// + /// For more information, see [`DiplomatWrite`]. + pub unsafe fn borrow_mut(&mut self) -> &mut DiplomatWrite { + // Safety: the pointer is valid because the Drop impl hasn't been called yet. + unsafe { &mut *self.ptr } + } +} + +impl Borrow for RustWriteVec { + fn borrow(&self) -> &DiplomatWrite { + self.borrow() + } +} + +impl Drop for RustWriteVec { + fn drop(&mut self) { + // Safety: by invariant, ptr was created by diplomat_buffer_write_create() + unsafe { diplomat_buffer_write_destroy(self.ptr) } + } +} + +/// A [`DiplomatWriteGeneric`] backed by a `Vec`, for convenient use in Rust. +pub struct RustWriteVecGeneric { + // Safety invariant: `inner.raw`'s `buf`, `len`, and `cap` correspond to a valid + // `Vec` allocation with `len = inner.raw.len / size_of::()` and + // `cap = inner.raw.cap / size_of::()`. + inner: DiplomatWriteGeneric, +} + +// Note: `this` must be `*mut DiplomatWrite` rather than `&mut DiplomatWrite` to match +// the `extern "C" fn(*mut DiplomatWrite, usize) -> bool` signature of `DiplomatWrite::grow`. +extern "C" fn grow_vec( + this: *mut DiplomatWrite, + new_cap_bytes: usize, +) -> bool { + // SAFETY: + // 1. `this` is a valid pointer to a `DiplomatWrite` constructed by `RustWriteVecGeneric::with_capacity`. + // 2. `this.buf` was allocated by `Vec::` with `old_len_elems` initialized elements and `old_cap_elems` capacity. + unsafe { + let this = this.as_mut().unwrap(); + let elem_size = core::mem::size_of::(); + if elem_size == 0 { + return true; + } + let new_cap_elems = new_cap_bytes.div_ceil(elem_size); + let old_len_elems = this.len / elem_size; + let old_cap_elems = this.cap / elem_size; + + let mut vec = Vec::::from_raw_parts(this.buf as *mut T, old_len_elems, old_cap_elems); + vec.reserve(new_cap_elems.saturating_sub(old_len_elems)); + this.cap = vec.capacity() * elem_size; + this.buf = vec.as_mut_ptr() as *mut u8; + core::mem::forget(vec); + } + true +} + +impl RustWriteVecGeneric { + /// Creates a new [`RustWriteVecGeneric`] with the given initial element capacity. + pub fn with_capacity(cap: usize) -> Self { + extern "C" fn flush(_: *mut DiplomatWrite) {} + let mut vec = Vec::::with_capacity(cap); + let raw = DiplomatWrite { + context: ptr::null_mut(), + buf: vec.as_mut_ptr() as *mut u8, + len: 0, + grow_failed: false, + cap: vec.capacity() * core::mem::size_of::(), + flush, + grow: grow_vec::, + }; + core::mem::forget(vec); + Self { + inner: DiplomatWriteGeneric { + raw, + _marker: PhantomData, + }, + } + } + + /// Borrows the underlying [`DiplomatWriteGeneric`]. + #[allow(clippy::should_implement_trait)] // the trait is also implemented + pub fn borrow(&self) -> &DiplomatWriteGeneric { + &self.inner + } + + /// Mutably borrows the underlying [`DiplomatWriteGeneric`]. + /// + /// # Safety + /// The contents of the returned reference MUST NOT be swapped with another instance + /// of [`DiplomatWriteGeneric`] that may have been created from a different source. + pub unsafe fn borrow_mut(&mut self) -> &mut DiplomatWriteGeneric { + &mut self.inner + } + + /// Returns a slice of the elements written so far. + pub fn as_slice(&self) -> &[T] { + self.inner.as_slice() + } + + /// Consumes the wrapper and returns the filled `Vec`. + pub fn into_vec(self) -> Vec { + let this = ManuallyDrop::new(self); + let elem_size = core::mem::size_of::(); + let len_elems = this.inner.raw.len.checked_div(elem_size).unwrap_or(0); + let cap_elems = this.inner.raw.cap.checked_div(elem_size).unwrap_or(0); + // SAFETY: + // 1. By `self.inner`'s safety invariant, `this.inner.raw.buf` was allocated by `Vec` + // with `len_elems` initialized elements and `cap_elems` capacity. + // 2. Wrapping `self` in `ManuallyDrop` prevents `Drop` from reconstructing and freeing + // the `Vec` a second time. + unsafe { Vec::::from_raw_parts(this.inner.raw.buf as *mut T, len_elems, cap_elems) } + } +} + +impl Borrow> for RustWriteVecGeneric { + fn borrow(&self) -> &DiplomatWriteGeneric { + self.borrow() + } +} + +impl Drop for RustWriteVecGeneric { + fn drop(&mut self) { + let elem_size = core::mem::size_of::(); + let len_elems = self.inner.raw.len.checked_div(elem_size).unwrap_or(0); + let cap_elems = self.inner.raw.cap.checked_div(elem_size).unwrap_or(0); + // SAFETY: By `self.inner`'s safety invariant, `self.inner.raw.buf` was allocated by `Vec` + // with `len_elems` initialized elements and `cap_elems` capacity. + unsafe { + let _ = Vec::::from_raw_parts(self.inner.raw.buf as *mut T, len_elems, cap_elems); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use core::fmt::Write; + + #[test] + fn test_rust_write() { + let mut buffer = RustWriteVec::with_capacity(5); + // Safety: this is the only instance of `DiplomatWrite` in scope. + unsafe { buffer.borrow_mut() } + .write_str("Hello World") + .unwrap(); + assert_eq!(buffer.borrow().as_bytes(), b"Hello World"); + } + + #[test] + fn test_rust_write_generic() { + let mut buffer = RustWriteVecGeneric::::with_capacity(2); + // SAFETY: this is the only instance of `DiplomatWriteGeneric` in scope. + let writer = unsafe { buffer.borrow_mut() }; + writer.push(10); + writer.push(20); + writer.push(30); // triggers grow + writer.write_slice(&[40, 50]); + writer.extend([60, 70]); + assert_eq!(writer.len(), 7); + assert_eq!(buffer.as_slice(), &[10, 20, 30, 40, 50, 60, 70]); + assert_eq!(buffer.into_vec(), alloc::vec![10, 20, 30, 40, 50, 60, 70]); + } + + #[test] + fn test_rust_write_16() { + let mut buffer = RustWriteVecGeneric::::with_capacity(2); + // SAFETY: this is the only instance of `DiplomatWrite16` in scope. + let writer: &mut crate::DiplomatWrite16 = unsafe { buffer.borrow_mut() }; + writer.write_char_as_utf16('A'); + writer.write_char_as_utf16('𐐷'); // surrogate pair: 0xD801, 0xDC37 + assert_eq!(writer.len(), 3); + assert_eq!(buffer.as_slice(), &[0x0041, 0xD801, 0xDC37]); + assert_eq!( + alloc::string::String::from_utf16(buffer.as_slice()).unwrap(), + "A𐐷" + ); + } +} diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/src/slices.rs b/deps/crates/vendor/diplomat-runtime-v0_16/src/slices.rs similarity index 91% rename from deps/crates/vendor/diplomat-runtime-v0_15/src/slices.rs rename to deps/crates/vendor/diplomat-runtime-v0_16/src/slices.rs index 1c7638aa0d74..a6b60e86527b 100644 --- a/deps/crates/vendor/diplomat-runtime-v0_15/src/slices.rs +++ b/deps/crates/vendor/diplomat-runtime-v0_16/src/slices.rs @@ -269,23 +269,35 @@ impl Deref for DiplomatOwnedUTF8StrSlice { } } -/// This like `&str`, but unvalidated and safe to use over FFI +/// This is like `&str`, but unvalidated and safe to use over FFI /// /// This type will usually map to some string type in the target language, and /// you will not need to worry about the safety of mismatched string invariants. +/// +/// Using this type on a function signature is equivalent to using `&DiplomatStr`, +/// however this type is FFI-safe and therefore also allowed inside Diplomat structs. pub type DiplomatStrSlice<'a> = DiplomatSlice<'a, u8>; -/// This like `Box`, but unvalidated and safe to use over FFI +/// This is like `Box`, but unvalidated and safe to use over FFI /// /// This type will usually map to some string type in the target language, and /// you will not need to worry about the safety of mismatched string invariants. +/// +/// Using this type on a function signature is equivalent to using `Box`, +/// however this type is FFI-safe and therefore also allowed inside Diplomat structs. pub type DiplomatOwnedStrSlice = DiplomatOwnedSlice; /// An unvalidated UTF-16 string that is safe to use over FFI /// /// This type will usually map to some string type in the target language, and /// you will not need to worry about the safety of mismatched string invariants. +/// +/// Using this type on a function signature is equivalent to using `&DiplomatStr16`, +/// however this type is FFI-safe and therefore also allowed inside Diplomat structs. pub type DiplomatStr16Slice<'a> = DiplomatSlice<'a, u16>; /// An unvalidated, owned UTF-16 string that is safe to use over FFI /// /// This type will usually map to some string type in the target language, and /// you will not need to worry about the safety of mismatched string invariants. +/// +/// Using this type on a function signature is equivalent to using `Box`, +/// however this type is FFI-safe and therefore also allowed inside Diplomat structs. pub type DiplomatOwnedStr16Slice<'a> = DiplomatOwnedSlice; diff --git a/deps/crates/vendor/diplomat-runtime-v0_15/src/wasm_glue.rs b/deps/crates/vendor/diplomat-runtime-v0_16/src/wasm_glue.rs similarity index 100% rename from deps/crates/vendor/diplomat-runtime-v0_15/src/wasm_glue.rs rename to deps/crates/vendor/diplomat-runtime-v0_16/src/wasm_glue.rs diff --git a/deps/crates/vendor/diplomat-runtime-v0_16/src/write.rs b/deps/crates/vendor/diplomat-runtime-v0_16/src/write.rs new file mode 100644 index 000000000000..c4996bc1f9a3 --- /dev/null +++ b/deps/crates/vendor/diplomat-runtime-v0_16/src/write.rs @@ -0,0 +1,504 @@ +use alloc::boxed::Box; +use alloc::vec::Vec; +use core::ffi::c_void; +use core::{fmt, ptr}; + +/// An object that can one can write UTF-8 strings to +/// +/// This allows the C API to write to arbitrary kinds of objects, for example a +/// C++ std::string or a char buffer. +/// +/// The way to use this object is to fill out the `buf`, `len`, `cap` fields with +/// appropriate values for the buffer, its current length, and its current capacity, +/// and `flush` and `grow` with appropriate callbacks (using `context` to reference any +/// state they need). This object will be passed by mutable reference to the Rust side, +/// and Rust will write to it, calling `grow()` as necessary. Once done, it will call `flush()` +/// to update any state on `context` (e.g. adding a null terminator, updating the length). +/// The object on the foreign side will be directly usable after this, the foreign side +/// need not perform additional state updates after passing an [`DiplomatWrite`] to +/// a function. +/// +/// May be extended in the future to support further invariants +/// +/// DiplomatWrite will not perform any cleanup on `context` or `buf`, these are logically +/// "borrows" from the FFI side. +/// +/// # DiplomatWrite is Polymorphic +/// +/// Instances of [`DiplomatWrite`] can be created from multiple different sources. +/// There are two constructors available in `diplomat_runtime`: +/// +/// 1. [`diplomat_simple_write()`] to write to a fixed-size buffer. +/// 2. [`diplomat_buffer_write_create()`] to write to a Vec allocated by Rust. +/// A wrapper is provided: [`RustWriteVec`](crate::rust_interop::RustWriteVec). +/// +/// Backends may have additional constructors for writing to various shapes of buffer. +/// +/// ⚠️ Because [`DiplomatWrite`] is polymorphic, the destructor must know how the instance +/// was constructed. It is therefore unsound to use functions such as [`core::mem::swap`] +/// on instances of [`DiplomatWrite`] with potentially different sources. For example, +/// the following code is not safe: +/// +/// ```no_run +/// use diplomat_runtime::DiplomatWrite; +/// fn bad(write: &mut DiplomatWrite) { +/// let mut some_other_write: DiplomatWrite = unimplemented!(); +/// // Not safe! The two `DiplomatWrite`s have different invariants +/// core::mem::swap(write, &mut some_other_write); +/// } +/// ``` +/// +/// As a result, any function that returns an owned `DiplomatWrite` or a `&mut DiplomatWrite` +/// must be `unsafe`. For an example, see [`RustWriteVec::borrow_mut`](crate::rust_interop::RustWriteVec::borrow_mut). +/// +/// Diplomat backends guarantee they will only ever hand the same type of `DiplomatWrite` object to Rust +/// code; this is only something you need to worry about if using [`RustWriteVec`](crate::rust_interop::RustWriteVec), +/// or `DiplomatWrite` objects manually created in Rust via APIs like `diplomat_simple_write`. +/// +/// # Safety invariants: +/// - `flush()` and `grow()` will be passed `self` including `context` and it should always be safe to do so. +/// `context` may be null, however `flush()` and `grow()` must then be ready to receive it as such. +/// - `buf` must be a valid pointer to `cap` bytes of memory +/// - `buf` must point to `len` consecutive properly initialized bytes +/// - `cap` must be less than or equal to isize::MAX +/// - `grow()` must either return false or update `buf` and `cap` for a valid buffer +/// of at least the requested buffer size. +/// - If grow_failed is true all safety invariants on buf/cap/len MUST still hold. +/// - `DiplomatWrite::flush()` will be automatically called by Diplomat. `flush()` might also be called +/// (erroneously) on the Rust side (it's a public method), so it must be idempotent. +#[repr(C)] +pub struct DiplomatWrite { + /// Context pointer for additional data needed by `grow()` and `flush()`. May be `null`. + /// + /// The pointer may reference structured data on the foreign side, + /// such as C++ std::string, used to reallocate buf. + pub(crate) context: *mut c_void, + /// The raw string buffer, which will be mutated on the Rust side. + pub(crate) buf: *mut u8, + /// The current filled size of the buffer + pub(crate) len: usize, + /// The current capacity of the buffer + pub(crate) cap: usize, + /// Set to true if `grow` ever fails. + pub(crate) grow_failed: bool, + /// Called by Rust to indicate that there is no more data to write. + /// + /// May be called multiple times. + /// + /// Arguments: + /// - `self` (`*mut DiplomatWrite`): This `DiplomatWrite` + pub(crate) flush: extern "C" fn(*mut DiplomatWrite), + /// Called by Rust to request more capacity in the buffer. The implementation should allocate a new + /// buffer and copy the contents of the old buffer into the new buffer, updating `self.buf` and `self.cap` + /// + /// Arguments: + /// - `self` (`*mut DiplomatWrite`): This `DiplomatWrite` + /// - `capacity` (`usize`): The requested capacity. + /// + /// Returns: `true` if the allocation succeeded. Should not update any state if it failed. + pub(crate) grow: extern "C" fn(*mut DiplomatWrite, usize) -> bool, +} + +impl DiplomatWrite { + /// Call this function before releasing the buffer to C + pub fn flush(&mut self) { + (self.flush)(self); + } + + /// Returns a pointer to the buffer's bytes. + /// + /// If growth has failed, this returns what has been written so far. + pub fn as_bytes(&self) -> &[u8] { + if self.buf.is_null() { + return &[]; + } + debug_assert!(self.len <= self.cap); + // Safety checklist, assuming this struct's safety invariants: + // 1. `buf` is a valid pointer and not null + // 2. `buf` points to `len` consecutive properly initialized bytes + // 3. `buf` won't be mutated because it is only directly accessible via + // `diplomat_buffer_write_get_bytes`, whose safety invariant states + // that the bytes cannot be mutated while borrowed + // can only be dereferenced using unsafe code + // 4. `buf`'s total size is no larger than isize::MAX + unsafe { core::slice::from_raw_parts(self.buf, self.len) } + } +} +impl fmt::Write for DiplomatWrite { + fn write_str(&mut self, s: &str) -> Result<(), fmt::Error> { + if self.grow_failed { + return Ok(()); + } + let needed_len = self.len + s.len(); + if needed_len > self.cap { + let success = (self.grow)(self, needed_len); + if !success { + self.grow_failed = true; + return Ok(()); + } + } + debug_assert!(needed_len <= self.cap); + unsafe { + ptr::copy_nonoverlapping(s.as_bytes().as_ptr(), self.buf.add(self.len), s.len()); + } + self.len = needed_len; + Ok(()) + } +} + +/// Create an `DiplomatWrite` that can write to a fixed-length stack allocated `u8` buffer. +/// +/// Once done, this will append a null terminator to the written string. +/// +/// This is largely used internally by Diplomat-generated FFI code, and should not need to be constructed +/// manually outside of that context. See [`RustWriteVec`](crate::rust_interop::RustWriteVec) if you need this in Rust. +/// +/// # Safety +/// +/// - `buf` must be a valid pointer to a region of memory that can hold at `buf_size` bytes +#[no_mangle] +pub unsafe extern "C" fn diplomat_simple_write(buf: *mut u8, buf_size: usize) -> DiplomatWrite { + extern "C" fn grow(_this: *mut DiplomatWrite, _cap: usize) -> bool { + false + } + extern "C" fn flush(this: *mut DiplomatWrite) { + unsafe { + debug_assert!((*this).len <= (*this).cap); + let buf = (*this).buf; + ptr::write(buf.add((*this).len), 0) + } + } + DiplomatWrite { + context: ptr::null_mut(), + buf, + len: 0, + grow_failed: false, + // keep an extra byte in our pocket for the null terminator + cap: buf_size - 1, + flush, + grow, + } +} + +/// Create an [`DiplomatWrite`] that can write to a dynamically allocated buffer managed by Rust. +/// +/// Use [`diplomat_buffer_write_destroy()`] to free the writable and its underlying buffer. +/// The pointer is valid until that function is called. +/// +/// This is largely used internally by Diplomat-generated FFI code, and should not need to be constructed +/// manually outside of that context. See [`RustWriteVec`](crate::rust_interop::RustWriteVec) if you need this in Rust. +/// +/// The grow impl never sets `grow_failed`, although it is possible for it to panic. +#[no_mangle] +pub extern "C" fn diplomat_buffer_write_create(cap: usize) -> *mut DiplomatWrite { + extern "C" fn grow(this: *mut DiplomatWrite, new_cap: usize) -> bool { + unsafe { + let this = this.as_mut().unwrap(); + let mut vec = Vec::from_raw_parts(this.buf, 0, this.cap); + vec.reserve(new_cap); + this.cap = vec.capacity(); + this.buf = vec.as_mut_ptr(); + core::mem::forget(vec); + } + true + } + + extern "C" fn flush(_: *mut DiplomatWrite) {} + + let mut vec = Vec::::with_capacity(cap); + let ret = DiplomatWrite { + context: ptr::null_mut(), + buf: vec.as_mut_ptr(), + len: 0, + grow_failed: false, + cap, + flush, + grow, + }; + + core::mem::forget(vec); + Box::into_raw(Box::new(ret)) +} + +/// Grabs a pointer to the underlying buffer of a writable. +/// +/// Returns null if there was an allocation error during the write construction. +/// +/// # Safety +/// - The returned pointer is valid until the passed writable is destroyed. +/// - The returned pointer is valid for both reads and writes, however Rust code +/// may not write to it if `this` is being accessed by other methods simultaneously. +/// - `this` must be a pointer to a valid [`DiplomatWrite`] constructed by +/// [`diplomat_buffer_write_create()`]. +#[no_mangle] +pub extern "C" fn diplomat_buffer_write_get_bytes(this: *mut DiplomatWrite) -> *mut u8 { + let this = unsafe { &*this }; + if this.grow_failed { + core::ptr::null_mut() + } else { + this.buf + } +} + +/// Gets the length in bytes of the content written to the writable. +/// +/// Returns 0 if there was an allocation error during the write construction. +/// +/// # Safety +/// - `this` must be a pointer to a valid [`DiplomatWrite`] constructed by +/// [`diplomat_buffer_write_create()`]. +#[no_mangle] +pub extern "C" fn diplomat_buffer_write_len(this: &DiplomatWrite) -> usize { + if this.grow_failed { + 0 + } else { + this.len + } +} + +/// Destructor for Rust-memory backed writables. +/// +/// # Safety +/// - `this` must be a pointer to a valid [`DiplomatWrite`] constructed by +/// [`diplomat_buffer_write_create()`]. +#[no_mangle] +pub unsafe extern "C" fn diplomat_buffer_write_destroy(this: *mut DiplomatWrite) { + let this = Box::from_raw(this); + let vec = Vec::from_raw_parts(this.buf, 0, this.cap); + drop(vec); + drop(this); +} + +mod sealed { + pub trait Sealed {} +} + +/// Marker trait for types that have a stable, shared C ABI layout and can be written +/// directly into a [`DiplomatWriteGeneric`]. +/// +/// This trait is currently sealed and implemented only for scalar primitive types. +/// +/// # Safety +/// Implementors must: +/// - Be `Copy` and Plain Old Data (POD). +/// - Have a fixed, shared layout across the FFI boundary. +/// - Contain no pointers, references, or custom `Drop` glue. +pub unsafe trait DiplomatAbiCompatible: Copy + sealed::Sealed {} + +macro_rules! impl_abi_compatible { + ($($ty:ty),* $(,)?) => { + $( + impl sealed::Sealed for $ty {} + // SAFETY: Scalar primitives are Copy, POD, have no pointers or Drop glue, + // and share a fixed C ABI layout across FFI. + unsafe impl DiplomatAbiCompatible for $ty {} + )* + }; +} + +impl_abi_compatible!(i8, u8, i16, u16, i32, u32, i64, u64, i128, u128, isize, usize, f32, f64); + +/// An object that can write a sequence of primitive values of type `T` across FFI. +/// +/// This wraps an underlying [`DiplomatWrite`] with a type-safe API for pushing elements, +/// writing slices, and extending from iterators. +/// +/// # Safety invariants +/// - All safety invariants of [`DiplomatWrite`] hold on `self.raw`. +/// - `self.raw.len` and `self.raw.cap` are measured in bytes, and `self.raw.len` is always +/// a multiple of `size_of::()`. +/// - `self.raw.buf` points to `self.raw.len / size_of::()` consecutive properly initialized +/// values of `T`. +#[repr(transparent)] +pub struct DiplomatWriteGeneric { + pub(crate) raw: DiplomatWrite, + pub(crate) _marker: core::marker::PhantomData, +} + +impl DiplomatWriteGeneric { + /// Pushes a single element into the buffer. + #[inline] + pub fn push(&mut self, val: T) { + if self.raw.grow_failed { + return; + } + let elem_size = core::mem::size_of::(); + if elem_size == 0 { + return; + } + let Some(needed_bytes) = self.raw.len.checked_add(elem_size) else { + self.raw.grow_failed = true; + return; + }; + if needed_bytes > self.raw.cap { + let success = (self.raw.grow)(&mut self.raw, needed_bytes); + if !success { + self.raw.grow_failed = true; + return; + } + } + debug_assert!(needed_bytes <= self.raw.cap); + // SAFETY: + // 1. `self.raw.buf` is valid for at least `needed_bytes` bytes (`<= self.raw.cap`). + // 2. `write_unaligned` is used so no alignment assumption on `self.raw.buf` is required. + unsafe { + ptr::write_unaligned(self.raw.buf.add(self.raw.len) as *mut T, val); + } + // Maintains safety invariant: `self.raw.len <= self.raw.cap` and `len` is a multiple of `size_of::()`. + self.raw.len = needed_bytes; + } + + /// Appends a contiguous slice of elements into the buffer. + #[inline] + pub fn write_slice(&mut self, slice: &[T]) { + if self.raw.grow_failed || slice.is_empty() { + return; + } + let elem_size = core::mem::size_of::(); + if elem_size == 0 { + return; + } + let Some(byte_len) = slice.len().checked_mul(elem_size) else { + self.raw.grow_failed = true; + return; + }; + let Some(needed_bytes) = self.raw.len.checked_add(byte_len) else { + self.raw.grow_failed = true; + return; + }; + if needed_bytes > self.raw.cap { + let success = (self.raw.grow)(&mut self.raw, needed_bytes); + if !success { + self.raw.grow_failed = true; + return; + } + } + debug_assert!(needed_bytes <= self.raw.cap); + // SAFETY: + // 1. `slice.as_ptr()` is valid for `byte_len` bytes. + // 2. `self.raw.buf.add(self.raw.len)` is valid for `byte_len` bytes (`needed_bytes <= self.raw.cap`). + // 3. The two memory regions do not overlap because `&mut self` exclusively borrows the write buffer. + unsafe { + ptr::copy_nonoverlapping( + slice.as_ptr() as *const u8, + self.raw.buf.add(self.raw.len), + byte_len, + ); + } + // Maintains safety invariant: `self.raw.len <= self.raw.cap` and `len` is a multiple of `size_of::()`. + self.raw.len = needed_bytes; + } + + /// Extends the buffer with elements from an iterator. + pub fn extend>(&mut self, iter: I) { + let iter = iter.into_iter(); + let (lower, _) = iter.size_hint(); + if lower > 0 { + self.reserve(lower); + } + for item in iter { + self.push(item); + } + } + + /// Reserves capacity for at least `additional` more elements of type `T`. + /// + /// Returns `true` if the reservation succeeded, or `false` if allocation failed. + pub fn reserve(&mut self, additional: usize) -> bool { + if self.raw.grow_failed { + return false; + } + let elem_size = core::mem::size_of::(); + let Some(additional_bytes) = additional.checked_mul(elem_size) else { + self.raw.grow_failed = true; + return false; + }; + let Some(needed_bytes) = self.raw.len.checked_add(additional_bytes) else { + self.raw.grow_failed = true; + return false; + }; + if needed_bytes > self.raw.cap { + let success = (self.raw.grow)(&mut self.raw, needed_bytes); + if !success { + self.raw.grow_failed = true; + return false; + } + } + true + } + + /// Returns the number of elements of type `T` written so far. + #[inline] + pub fn len(&self) -> usize { + self.raw + .len + .checked_div(core::mem::size_of::()) + .unwrap_or(0) + } + + /// Returns `true` if no elements have been written. + #[inline] + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns the current capacity in elements of type `T`. + #[inline] + pub fn capacity(&self) -> usize { + self.raw + .cap + .checked_div(core::mem::size_of::()) + .unwrap_or(0) + } + + /// Returns a slice of the elements written so far if the underlying buffer is aligned for `T`. + /// + /// If growth has failed, this returns what has been written so far. + pub fn as_slice(&self) -> &[T] { + if self.raw.buf.is_null() || self.raw.len == 0 { + return &[]; + } + let elem_size = core::mem::size_of::(); + if elem_size == 0 { + return &[]; + } + let count = self.raw.len / elem_size; + if !(self.raw.buf as usize).is_multiple_of(core::mem::align_of::()) { + return &[]; + } + debug_assert!(self.raw.len <= self.raw.cap); + // SAFETY: + // 1. `self.raw.buf` is non-null and aligned to `align_of::()` (checked above). + // 2. By `DiplomatWriteGeneric`'s safety invariants, `self.raw.buf` points to `count` + // consecutive properly initialized values of `T` with total size `<= isize::MAX`. + // 3. The buffer will not be mutated while `&self` is borrowed. + unsafe { core::slice::from_raw_parts(self.raw.buf as *const T, count) } + } + + /// Call this function before releasing the buffer to C. + pub fn flush(&mut self) { + self.raw.flush(); + } +} + +impl Extend for DiplomatWriteGeneric { + fn extend>(&mut self, iter: I) { + DiplomatWriteGeneric::extend(self, iter); + } +} + +/// An object that can one-shot write a UTF-16 string. +/// +/// Over FFI, this acts just like [`DiplomatWrite`], except that the underlying +/// buffer contains `u16` code units and is converted into a string by backends +/// that support `utf16_writeables`. +pub type DiplomatWrite16 = DiplomatWriteGeneric; + +impl DiplomatWriteGeneric { + /// Encodes `c` as UTF-16 (1 or 2 `u16` code units) and appends it to the buffer. + #[inline] + pub fn write_char_as_utf16(&mut self, c: char) { + let mut buf = [0u16; 2]; + self.write_slice(c.encode_utf16(&mut buf)); + } +} diff --git a/deps/crates/vendor/icu_calendar-v2/.cargo_vcs_info.json b/deps/crates/vendor/icu_calendar-v2/.cargo_vcs_info.json index 3b5a9e97d12d..071f26eec28d 100644 --- a/deps/crates/vendor/icu_calendar-v2/.cargo_vcs_info.json +++ b/deps/crates/vendor/icu_calendar-v2/.cargo_vcs_info.json @@ -1,6 +1,6 @@ { "git": { - "sha1": "6f32890b737485e86b712777edb7001d2f31c9c8" + "sha1": "031d9e89f6a3fd26a14491e090729d46094328fd" }, "path_in_vcs": "components/calendar" } \ No newline at end of file diff --git a/deps/crates/vendor/icu_calendar-v2/Cargo.lock b/deps/crates/vendor/icu_calendar-v2/Cargo.lock index 4f6b937bd7a1..4a861836abef 100644 --- a/deps/crates/vendor/icu_calendar-v2/Cargo.lock +++ b/deps/crates/vendor/icu_calendar-v2/Cargo.lock @@ -10,9 +10,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] @@ -31,9 +31,9 @@ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base64" @@ -43,21 +43,21 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "calendrical_calculations" @@ -78,9 +78,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.57" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" +checksum = "6651c9ed80effdc7db0ff72512157f901af5e3549e341e24b1dd4887d836d838" dependencies = [ "find-msvc-tools", "shlex", @@ -88,15 +88,15 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "num-traits", ] @@ -130,18 +130,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.18" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ "anstyle", "clap_lex", @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "0e78417baa3b3114dc0e95e7357389a249c4da97c3c2b540700079db6171bfd7" [[package]] name = "cobs" @@ -173,14 +173,13 @@ dependencies = [ [[package]] name = "console" -version = "0.15.11" +version = "0.16.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +checksum = "e96a4956774c13c126a8b5af4daa79384f4d826534c95a02d76afb39e2ab64e3" dependencies = [ "encode_unicode", "libc", - "once_cell", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -194,9 +193,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.5.0" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" dependencies = [ "cfg-if", ] @@ -239,9 +238,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -249,18 +248,18 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" [[package]] name = "crunchy" @@ -281,41 +280,38 @@ dependencies = [ [[package]] name = "databake-derive" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b537745234cbf0e296a3bd836d70a614dff4cb522b14e2680ef006bb1ed5ff" +checksum = "495503291b258422ea2bb9863d9f4e31eadbc5bcbdbe8b721769fa2c98dc4d41" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", "synstructure", ] [[package]] name = "deranged" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" -dependencies = [ - "powerfmt", -] +checksum = "9e9de72ce2ad1f90dc62fa25f0f430ef85eb4b0d8fa0be4f30373bc40a21d28e" [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", ] [[package]] name = "either" -version = "1.15.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" [[package]] name = "encode_unicode" @@ -346,24 +342,25 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" [[package]] name = "flate2" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" dependencies = [ "crc32fast", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -401,15 +398,15 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" [[package]] name = "http" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" dependencies = [ "bytes", "itoa", @@ -423,7 +420,7 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "icu_calendar" -version = "2.2.1" +version = "2.4.0" dependencies = [ "calendrical_calculations", "chrono", @@ -431,8 +428,8 @@ dependencies = [ "databake", "displaydoc", "icu_calendar_data", - "icu_locale", "icu_locale_core", + "icu_locale_fallback", "icu_provider", "insta", "itertools 0.14.0", @@ -449,33 +446,33 @@ dependencies = [ [[package]] name = "icu_calendar_data" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "118577bcf3a0fa7c6ac0a7d6e951814da84ee56b9b1f68fb4d8d10b08cefaf4d" +checksum = "514da54e79efa36b5976232d5b3d1d8ee1b47b19ab658f1b1ebe39221696c2d8" [[package]] -name = "icu_collections" -version = "2.2.0" +name = "icu_locale_core" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +checksum = "25d29b57c17c6528d0dc4c2141cfa2d08200465acb537a3909c8b9b8a4a984c0" dependencies = [ + "databake", "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", + "litemap", + "serde", + "tinystr", + "writeable", "zerovec", ] [[package]] -name = "icu_locale" -version = "2.2.0" +name = "icu_locale_fallback" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5a396343c7208121dc86e35623d3dfe19814a7613cfd14964994cdc9c9a2e26" +checksum = "406e9ae5b95d8aa37db6293405931b766a6172d1848daee22d70eb44aa78a43c" dependencies = [ - "icu_collections", "icu_locale_core", - "icu_locale_data", + "icu_locale_fallback_data", "icu_provider", "potential_utf", "tinystr", @@ -483,30 +480,16 @@ dependencies = [ ] [[package]] -name = "icu_locale_core" -version = "2.2.0" +name = "icu_locale_fallback_data" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "displaydoc", - "litemap", - "serde", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locale_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fdcc9ac77c6d74ff5cf6e65ef3181d6af32003b16fce3a77fb451d2f695993" +checksum = "3632ebbd0c5c3637ba1a40bdf8288f2cb9d2268e73441a69d5fc73d7cfbaa87c" [[package]] name = "icu_provider" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +checksum = "413099315636c588ee8f011190b329b971a09a8fae9d157e01dcae8379468514" dependencies = [ "databake", "displaydoc", @@ -524,9 +507,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.46.3" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82db8c87c7f1ccecb34ce0c24399b8a73081427f3c7c50a5d597925356115e4" +checksum = "b67d3d2e287e4b86c10b3f3b641033d1f89b74bdb39d05f34952e2b9a6fe21cd" dependencies = [ "console", "once_cell", @@ -571,15 +554,15 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "ixdtf" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ceaf4c6c48465bead8cb6a0b7c4ee0c86ecbb31239032b9c66ab9a08d2f3ee1" +checksum = "4754a1731458af0443709c9667302793d3f63cc90ec4ba4c8259f2b9515478e5" [[package]] name = "jiff" -version = "0.2.23" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" dependencies = [ "jiff-static", "portable-atomic", @@ -588,20 +571,20 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.23" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "js-sys" -version = "0.3.91" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" dependencies = [ "once_cell", "wasm-bindgen", @@ -609,9 +592,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.183" +version = "0.2.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" +checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78" [[package]] name = "libm" @@ -627,27 +610,27 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" [[package]] name = "log" -version = "0.4.29" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "miniz_oxide" -version = "0.8.9" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" dependencies = [ "adler2", "simd-adler32", @@ -655,9 +638,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" [[package]] name = "num-traits" @@ -725,15 +708,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.13.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "portable-atomic-util" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" dependencies = [ "portable-atomic", ] @@ -750,9 +733,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" dependencies = [ "serde_core", "writeable", @@ -767,18 +750,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -811,9 +794,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -823,9 +806,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -834,9 +817,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "ring" @@ -854,9 +837,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" dependencies = [ "bitflags", "errno", @@ -867,9 +850,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.37" +version = "0.23.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" dependencies = [ "log", "once_cell", @@ -882,18 +865,18 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" dependencies = [ "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.103.10" +version = "0.103.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" dependencies = [ "ring", "rustls-pki-types", @@ -902,9 +885,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -917,9 +900,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -927,29 +910,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6" dependencies = [ "itoa", "memchr", @@ -960,15 +943,15 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "similar" @@ -978,9 +961,9 @@ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "simple_logger" -version = "5.1.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291bee647ce7310b0ea721bfd7e0525517b4468eb7c7e15eb8bd774343179702" +checksum = "c7038d0e96661bf9ce647e1a6f6ef6d6f3663f66d9bf741abf14ba4876071c17" dependencies = [ "colored", "log", @@ -1002,9 +985,20 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" dependencies = [ "proc-macro2", "quote", @@ -1013,13 +1007,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", ] [[package]] @@ -1037,32 +1031,31 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", ] [[package]] name = "time" -version = "0.3.45" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" dependencies = [ "deranged", - "itoa", "libc", "num-conv", "num_threads", @@ -1074,15 +1067,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.25" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" dependencies = [ "num-conv", "time-core", @@ -1090,9 +1083,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +checksum = "abc840c238154d58f9e86b2792261edfde565a17696e1cda1a449de27979801a" dependencies = [ "databake", "displaydoc", @@ -1118,9 +1111,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "unicode-ident" -version = "1.0.24" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +checksum = "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563" [[package]] name = "untrusted" @@ -1163,12 +1156,6 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "walkdir" version = "2.5.0" @@ -1196,9 +1183,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" dependencies = [ "cfg-if", "once_cell", @@ -1209,9 +1196,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1219,31 +1206,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.91" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" dependencies = [ "js-sys", "wasm-bindgen", @@ -1251,9 +1238,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +checksum = "1c1c8e20c8a38fc7d65abfe74eb7280e4aa667e8eec8bc84996d2874810748d9" dependencies = [ "rustls-pki-types", ] @@ -1282,15 +1269,6 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-sys" version = "0.61.2" @@ -1372,15 +1350,15 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "417ef3fcf6c300b7dbd25c85531a746931c02ad536f3cf4786ed1e88223340b3" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -1389,34 +1367,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", "synstructure", ] [[package]] name = "zerofrom" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", "synstructure", ] @@ -1428,9 +1406,9 @@ checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" dependencies = [ "displaydoc", "zerovec", @@ -1438,9 +1416,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +checksum = "f58a2799cfe9a1670c7ea8edbd52ef8edb93cb37a7f83bf31ba9e35d9dae6a40" dependencies = [ "databake", "serde", @@ -1451,17 +1429,23 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.3" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +checksum = "c3743ddbf47738d929cd1ae2e199d40d0162979dfe31aef8ae646d2bf00bf97a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.9", ] +[[package]] +name = "zlib-rs" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" + [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/deps/crates/vendor/icu_calendar-v2/Cargo.toml b/deps/crates/vendor/icu_calendar-v2/Cargo.toml index d274f60e292c..99c5e94078cf 100644 --- a/deps/crates/vendor/icu_calendar-v2/Cargo.toml +++ b/deps/crates/vendor/icu_calendar-v2/Cargo.toml @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2021" -rust-version = "1.86" +edition = "2024" +rust-version = "1.88" name = "icu_calendar" -version = "2.2.1" +version = "2.4.0" authors = ["The ICU4X Project Developers"] build = false include = [ @@ -48,6 +48,7 @@ categories = [ ] license = "Unicode-3.0" repository = "https://github.com/unicode-org/icu4x" +resolver = "2" [package.metadata.docs.rs] all-features = true @@ -66,8 +67,8 @@ alloc = [ ] compiled_data = [ "dep:icu_calendar_data", - "dep:icu_locale", - "icu_locale?/compiled_data", + "dep:icu_locale_fallback", + "icu_locale_fallback?/compiled_data", "icu_provider/baked", ] datagen = [ @@ -77,6 +78,7 @@ datagen = [ "tinystr/databake", "alloc", "icu_provider/export", + "icu_locale_core/databake", ] default = [ "compiled_data", @@ -89,6 +91,7 @@ serde = [ "zerovec/serde", "tinystr/serde", "icu_provider/serde", + "icu_locale_core/serde", ] unstable = [] unstable_chrono_0_4 = ["dep:chrono"] @@ -126,6 +129,11 @@ name = "date" path = "benches/date.rs" harness = false +[[bench]] +name = "preferred" +path = "benches/preferred.rs" +harness = false + [[bench]] name = "until" path = "benches/until.rs" @@ -151,25 +159,25 @@ version = "0.2.3" default-features = false [dependencies.icu_calendar_data] -version = "~2.2.0" +version = "~2.4.0" optional = true default-features = false -[dependencies.icu_locale] -version = "~2.2.0" -optional = true +[dependencies.icu_locale_core] +version = "2.4.0" default-features = false -[dependencies.icu_locale_core] -version = "2.2.0" +[dependencies.icu_locale_fallback] +version = "~2.4.0" +optional = true default-features = false [dependencies.icu_provider] -version = "2.2.0" +version = "2.4.0" default-features = false [dependencies.ixdtf] -version = "0.6.5" +version = "0.6.7" optional = true default-features = false @@ -190,17 +198,17 @@ optional = true default-features = false [dependencies.tinystr] -version = "0.8.3" +version = "0.8.5" features = ["zerovec"] default-features = false [dependencies.zerovec] -version = "0.11.6" +version = "0.11.9" features = ["derive"] default-features = false [dev-dependencies.insta] -version = "1.38.0" +version = "1.43.2" [dev-dependencies.itertools] version = "0.14.0" @@ -231,8 +239,9 @@ version = "3.0.0" version = "0.5.0" [lints.clippy] -alloc-instead-of-core = "warn" -branches-sharing-code = "warn" +alloc_instead_of_core = "warn" +bool_assert_comparison = "allow" +branches_sharing_code = "warn" collection_is_never_read = "warn" crosspointer_transmute = "warn" dbg_macro = "warn" @@ -247,7 +256,7 @@ mismatching_type_param_order = "warn" missing_fields_in_debug = "warn" missing_transmute_annotations = "warn" negative_feature_names = "warn" -or-fun-call = "warn" +or_fun_call = "warn" same_functions_in_if_condition = "warn" todo = "warn" transmute_bytes_to_str = "warn" @@ -258,7 +267,7 @@ transmute_ptr_to_ref = "warn" transmute_undefined_repr = "warn" transmutes_expressible_as_ptr_casts = "warn" trivially_copy_pass_by_ref = "deny" -unnecessary-wraps = "warn" +unnecessary_wraps = "warn" useless_transmute = "warn" wildcard_dependencies = "warn" @@ -275,6 +284,7 @@ priority = 0 check-cfg = [ "cfg(icu4c_enable_renaming)", "cfg(needs_alloc_error_handler)", + "cfg(icu4x_nightly_tests)", "cfg(icu4x_run_size_tests)", "cfg(icu4x_unstable_fast_trie_only)", ] diff --git a/deps/crates/vendor/icu_calendar-v2/Cargo.toml.orig b/deps/crates/vendor/icu_calendar-v2/Cargo.toml.orig index 8d7d5e8faf02..721b86a1860e 100644 --- a/deps/crates/vendor/icu_calendar-v2/Cargo.toml.orig +++ b/deps/crates/vendor/icu_calendar-v2/Cargo.toml.orig @@ -5,7 +5,7 @@ [package] name = "icu_calendar" description = "Date APIs for Gregorian and non-Gregorian calendars" -version = "2.2.1" +version.workspace = true categories.workspace = true keywords = ["unicode", "formatting", "date"] @@ -36,7 +36,7 @@ databake = { workspace = true, features = ["derive"], optional = true } serde = { workspace = true, features = ["derive"], optional = true } icu_calendar_data = { workspace = true, optional = true } -icu_locale = { workspace = true, optional = true } +icu_locale_fallback = { workspace = true, optional = true } chrono = { workspace = true, optional = true } jiff = { workspace = true, optional = true } @@ -50,7 +50,7 @@ serde = { workspace = true, features = ["derive", "alloc"] } serde_json = { workspace = true } simple_logger = { workspace = true } ureq = { workspace = true } -insta = "1.38.0" +insta = { workspace = true } time = { workspace = true, features = ["large-dates"]} @@ -62,9 +62,9 @@ criterion = { workspace = true } default = ["compiled_data", "ixdtf"] ixdtf = ["dep:ixdtf"] logging = ["calendrical_calculations/logging"] -serde = ["dep:serde", "zerovec/serde", "tinystr/serde", "icu_provider/serde"] -datagen = ["serde", "dep:databake", "zerovec/databake", "tinystr/databake", "alloc", "icu_provider/export"] -compiled_data = ["dep:icu_calendar_data", "dep:icu_locale", "icu_locale?/compiled_data", "icu_provider/baked"] +serde = ["dep:serde", "zerovec/serde", "tinystr/serde", "icu_provider/serde", "icu_locale_core/serde"] +datagen = ["serde", "dep:databake", "zerovec/databake", "tinystr/databake", "alloc", "icu_provider/export", "icu_locale_core/databake"] +compiled_data = ["dep:icu_calendar_data", "dep:icu_locale_fallback", "icu_locale_fallback?/compiled_data", "icu_provider/baked"] unstable = [] unstable_jiff_0_2 = ["dep:jiff"] unstable_chrono_0_4 = ["dep:chrono"] @@ -84,6 +84,10 @@ harness = false name = "convert" harness = false +[[bench]] +name = "preferred" +harness = false + [[test]] name = "arithmetic" required-features = ["ixdtf"] diff --git a/deps/crates/vendor/icu_calendar-v2/README.md b/deps/crates/vendor/icu_calendar-v2/README.md index 857bddb2a154..c44496462504 100644 --- a/deps/crates/vendor/icu_calendar-v2/README.md +++ b/deps/crates/vendor/icu_calendar-v2/README.md @@ -27,7 +27,7 @@ for working with dates, encompassing information about the day, month, year, as well as the calendar type. ```rust -use icu::calendar::{types::Weekday, Date}; +use icu::calendar::{Date, types::Weekday}; // Creating ISO date: 1992-09-02. let mut date_iso = Date::try_new_iso(1992, 9, 2) @@ -46,8 +46,8 @@ assert_eq!(date_iso.days_in_month(), 30); Example of converting an ISO date across Indian and Buddhist calendars. ```rust -use icu::calendar::cal::{Buddhist, Indian}; use icu::calendar::Date; +use icu::calendar::cal::{Buddhist, Indian}; // Creating ISO date: 1992-09-02. let mut date_iso = Date::try_new_iso(1992, 9, 2) diff --git a/deps/crates/vendor/icu_calendar-v2/benches/convert.rs b/deps/crates/vendor/icu_calendar-v2/benches/convert.rs index d8d07e796972..e1959891b855 100644 --- a/deps/crates/vendor/icu_calendar-v2/benches/convert.rs +++ b/deps/crates/vendor/icu_calendar-v2/benches/convert.rs @@ -3,7 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use criterion::{ - black_box, criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion, + BenchmarkGroup, Criterion, black_box, criterion_group, criterion_main, measurement::WallTime, }; use icu_calendar::{Calendar, Date}; diff --git a/deps/crates/vendor/icu_calendar-v2/benches/date.rs b/deps/crates/vendor/icu_calendar-v2/benches/date.rs index 4cf99b524e1c..6b8eb6b93ca3 100644 --- a/deps/crates/vendor/icu_calendar-v2/benches/date.rs +++ b/deps/crates/vendor/icu_calendar-v2/benches/date.rs @@ -18,11 +18,12 @@ struct Test { } use criterion::{ - black_box, criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion, + BenchmarkGroup, Criterion, black_box, criterion_group, criterion_main, measurement::WallTime, }; use icu_calendar::{ + AsCalendar, Calendar, Date, options::{DateAddOptions, Overflow}, - types, AsCalendar, Calendar, Date, + types, }; fn bench_date(date: &mut Date) { diff --git a/deps/crates/vendor/icu_calendar-v2/benches/preferred.rs b/deps/crates/vendor/icu_calendar-v2/benches/preferred.rs new file mode 100644 index 000000000000..8532901386c6 --- /dev/null +++ b/deps/crates/vendor/icu_calendar-v2/benches/preferred.rs @@ -0,0 +1,28 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +use criterion::{Criterion, black_box, criterion_group, criterion_main}; +use icu::calendar::AnyCalendarKind; +use icu::calendar::preferences::CalendarPreferences; +use icu::locale::locale; + +/// Loading the preferred calendar is an operation often in the critical path +/// for datetime formatting. We want to keep it from regressing. See #8375. +fn preferred_benches(c: &mut Criterion) { + let prefs = &[ + CalendarPreferences::from(locale!("en")), + CalendarPreferences::from(locale!("fa")), + CalendarPreferences::from(locale!("ar-EG")), + CalendarPreferences::from(locale!("ar-SA-u-ca-islamic")), + CalendarPreferences::from(locale!("he-u-ca-hebrew")), + ]; + let mut group = c.benchmark_group("preferred"); + group.bench_function("try_new", |b| { + b.iter(|| black_box(&prefs).map(AnyCalendarKind::try_new)) + }); + group.finish(); +} + +criterion_group!(benches, preferred_benches); +criterion_main!(benches); diff --git a/deps/crates/vendor/icu_calendar-v2/benches/until.rs b/deps/crates/vendor/icu_calendar-v2/benches/until.rs index 318285750981..cde609c3e9b8 100644 --- a/deps/crates/vendor/icu_calendar-v2/benches/until.rs +++ b/deps/crates/vendor/icu_calendar-v2/benches/until.rs @@ -3,7 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use criterion::{ - black_box, criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion, + BenchmarkGroup, Criterion, black_box, criterion_group, criterion_main, measurement::WallTime, }; use icu_calendar::options::{DateDifferenceOptions, DateDurationUnit}; use icu_calendar::types::RataDie; diff --git a/deps/crates/vendor/icu_calendar-v2/src/any_calendar.rs b/deps/crates/vendor/icu_calendar-v2/src/any_calendar.rs index 2cb820d6bcc2..16a4b64bc0be 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/any_calendar.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/any_calendar.rs @@ -7,6 +7,7 @@ #![allow(clippy::unit_arg)] use crate::cal::*; +use crate::provider::CalendarPreferredV1; use crate::{AsCalendar, Calendar, Date, Ref}; use crate::preferences::{CalendarAlgorithm, CalendarPreferences, HijriCalendarAlgorithm}; @@ -75,7 +76,7 @@ macro_rules! make_any_calendar { ) -> Result { Ok(match self { $( - &Self::$variant(ref c) => $any_date_ident::$variant(c.new_date(year, month, day)?), + &Self::$variant(c) => $any_date_ident::$variant(c.new_date(year, month, day)?), )+ }) } @@ -87,7 +88,7 @@ macro_rules! make_any_calendar { ) -> Result { Ok(match self { $( - &Self::$variant(ref c) => $any_date_ident::$variant(c.from_fields(fields, options)?), + &Self::$variant(c) => $any_date_ident::$variant(c.from_fields(fields, options)?), )+ }) } @@ -95,7 +96,7 @@ macro_rules! make_any_calendar { fn has_cheap_iso_conversion(&self) -> bool { match self { $( - Self::$variant(ref c) => c.has_cheap_iso_conversion(), + Self::$variant(c) => c.has_cheap_iso_conversion(), )+ } } @@ -103,7 +104,7 @@ macro_rules! make_any_calendar { fn from_iso(&self, iso: <$crate::Iso as $crate::Calendar>::DateInner) -> Self::DateInner { match self { $( - &Self::$variant(ref c) => $any_date_ident::$variant(c.from_iso(iso)), + &Self::$variant(c) => $any_date_ident::$variant(c.from_iso(iso)), )+ } } @@ -111,7 +112,7 @@ macro_rules! make_any_calendar { fn to_iso(&self, date: &Self::DateInner) -> <$crate::Iso as $crate::Calendar>::DateInner { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.to_iso(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.to_iso(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -121,7 +122,7 @@ macro_rules! make_any_calendar { fn from_rata_die(&self, rd: $crate::types::RataDie) -> Self::DateInner { match self { $( - &Self::$variant(ref c) => $any_date_ident::$variant(c.from_rata_die(rd)), + &Self::$variant(c) => $any_date_ident::$variant(c.from_rata_die(rd)), )+ } } @@ -129,7 +130,7 @@ macro_rules! make_any_calendar { fn to_rata_die(&self, date: &Self::DateInner) -> $crate::types::RataDie { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.to_rata_die(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.to_rata_die(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -139,7 +140,7 @@ macro_rules! make_any_calendar { fn months_in_year(&self, date: &Self::DateInner) -> u8 { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.months_in_year(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.months_in_year(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -149,7 +150,7 @@ macro_rules! make_any_calendar { fn days_in_year(&self, date: &Self::DateInner) -> u16 { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.days_in_year(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.days_in_year(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -159,7 +160,7 @@ macro_rules! make_any_calendar { fn days_in_month(&self, date: &Self::DateInner) -> u8 { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.days_in_month(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.days_in_month(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -169,7 +170,7 @@ macro_rules! make_any_calendar { fn year_info(&self, date: &Self::DateInner) -> $crate::types::YearInfo { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.year_info(&d).into(), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.year_info(&d).into(), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -180,7 +181,7 @@ macro_rules! make_any_calendar { fn is_in_leap_year(&self, date: &Self::DateInner) -> bool { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.is_in_leap_year(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.is_in_leap_year(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -191,7 +192,7 @@ macro_rules! make_any_calendar { fn month(&self, date: &Self::DateInner) -> $crate::types::MonthInfo { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.month(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.month(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -202,7 +203,7 @@ macro_rules! make_any_calendar { fn day_of_month(&self, date: &Self::DateInner) -> $crate::types::DayOfMonth { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.day_of_month(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.day_of_month(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -213,7 +214,7 @@ macro_rules! make_any_calendar { fn day_of_year(&self, date: &Self::DateInner) -> $crate::types::DayOfYear { match (self, date) { $( - (&Self::$variant(ref c), &$any_date_ident::$variant(d)) => c.day_of_year(&d), + (&Self::$variant(c), &$any_date_ident::$variant(d)) => c.day_of_year(&d), )+ // This is only reached from misuse of from_raw, a semi-internal api _ => panic!(concat!(stringify!($any_calendar_ident), " with mismatched date type")), @@ -229,7 +230,7 @@ macro_rules! make_any_calendar { let mut date = *date; match (self, &mut date) { $( - (&Self::$variant(ref c), $any_date_ident::$variant(ref mut d)) => { + (&Self::$variant(c), $any_date_ident::$variant(d)) => { *d = c.add(d, duration, options)?; }, )+ @@ -247,7 +248,7 @@ macro_rules! make_any_calendar { ) -> $crate::types::DateDuration { match (self, date1, date2) { $( - (Self::$variant(ref c), $any_date_ident::$variant(d1), $any_date_ident::$variant(d2)) => { + (Self::$variant(c), $any_date_ident::$variant(d1), $any_date_ident::$variant(d2)) => { c.until(d1, d2, options) } )+ @@ -259,7 +260,7 @@ macro_rules! make_any_calendar { fn check_date_compatibility(&self, other: &Self) -> Result<(), Self::DateCompatibilityError> { match (self, other) { $( - (Self::$variant(ref c1), Self::$variant(ref c2)) if c1.check_date_compatibility(c2).is_ok() => { + (Self::$variant(c1), Self::$variant(c2)) if c1.check_date_compatibility(c2).is_ok() => { Ok(()) } )+ @@ -278,7 +279,7 @@ macro_rules! make_any_calendar { fn calendar_algorithm(&self) -> Option { match self { $( - Self::$variant(ref c) => c.calendar_algorithm(), + Self::$variant(c) => c.calendar_algorithm(), )+ } } @@ -352,6 +353,8 @@ make_any_calendar!( /// /// There are many ways of constructing an [`AnyCalendar`]'d date: /// ``` + /// # #![allow(clippy::eq_op)] + /// # #![allow(clippy::neg_cmp_op_on_partial_ord)] /// use icu::calendar::{AnyCalendar, AnyCalendarKind, Date, cal::{Japanese, Gregorian}, types::MonthCode}; /// use icu::locale::locale; /// use tinystr::tinystr; @@ -359,7 +362,7 @@ make_any_calendar!( /// /// let locale = locale!("en-u-ca-japanese"); // English with the Japanese calendar /// - /// let calendar = AnyCalendar::new(AnyCalendarKind::new(locale.into())); + /// let calendar = AnyCalendar::new(AnyCalendarKind::try_new(locale.into()).unwrap()); /// /// // This is a Date /// let any_japanese_date = Date::try_new_gregorian(2020, 9, 1) @@ -403,6 +406,7 @@ make_any_calendar!( Japanese(Japanese), #[deprecated(since = "2.2.0", note = "see `Japanese`")] JapaneseExtended(Japanese), + Julian(Julian), Persian(Persian), Roc(Roc), ); @@ -420,6 +424,7 @@ make_any_calendar_impls!( Indian(Indian), Iso(Iso), Japanese(Japanese), + Julian(Julian), Persian(Persian), Roc(Roc), HijriSimulated(Hijri), @@ -471,6 +476,7 @@ impl AnyCalendar { AnyCalendarKind::Japanese | AnyCalendarKind::JapaneseExtended => { AnyCalendar::Japanese(Japanese::new()) } + AnyCalendarKind::Julian => AnyCalendar::Julian(Julian), AnyCalendarKind::Persian => AnyCalendar::Persian(Persian), AnyCalendarKind::Roc => AnyCalendar::Roc(Roc), } @@ -523,6 +529,7 @@ impl AnyCalendar { AnyCalendarKind::Japanese | AnyCalendarKind::JapaneseExtended => { AnyCalendar::Japanese(Japanese::try_new_with_buffer_provider(provider)?) } + AnyCalendarKind::Julian => AnyCalendar::Julian(Julian), AnyCalendarKind::Persian => AnyCalendar::Persian(Persian), AnyCalendarKind::Roc => AnyCalendar::Roc(Roc), }) @@ -571,6 +578,7 @@ impl AnyCalendar { AnyCalendarKind::Japanese | AnyCalendarKind::JapaneseExtended => { AnyCalendar::Japanese(Japanese::try_new_unstable(provider)?) } + AnyCalendarKind::Julian => AnyCalendar::Julian(Julian), AnyCalendarKind::Persian => AnyCalendar::Persian(Persian), AnyCalendarKind::Roc => AnyCalendar::Roc(Roc), }) @@ -618,6 +626,7 @@ impl AnyCalendar { AnyCalendarKind::Japanese | AnyCalendarKind::JapaneseExtended => { AnyCalendar::Japanese(Japanese::default()) } + AnyCalendarKind::Julian => AnyCalendar::Julian(Julian), AnyCalendarKind::Persian => AnyCalendar::Persian(Persian), AnyCalendarKind::Roc => AnyCalendar::Roc(Roc), } @@ -653,6 +662,7 @@ impl AnyCalendar { Self::Iso(_) => AnyCalendarKind::Iso, #[allow(deprecated)] Self::Japanese(_) | Self::JapaneseExtended(_) => AnyCalendarKind::Japanese, + Self::Julian(_) => AnyCalendarKind::Julian, Self::Persian(_) => AnyCalendarKind::Persian, Self::Roc(_) => AnyCalendarKind::Roc, } @@ -726,6 +736,8 @@ pub enum AnyCalendarKind { /// Deprecated, use `Japanese`. #[deprecated(since = "2.2.0", note = "use `Japanese`")] JapaneseExtended, + /// The kind of a [`Julian`] calendar + Julian, /// The kind of a [`Persian`] calendar /// /// This corresponds to the `"persian"` [CLDR calendar](https://unicode.org/reports/tr35/#UnicodeCalendarIdentifier). @@ -737,13 +749,77 @@ pub enum AnyCalendarKind { } impl AnyCalendarKind { + #[deprecated(since = "2.2.0", note = "use `AnyCalendarKind::try_new`")] /// Selects the [`AnyCalendarKind`] appropriate for the given [`CalendarPreferences`]. pub fn new(prefs: CalendarPreferences) -> Self { + #[allow(deprecated)] prefs .resolved_algorithm() .try_into() .unwrap_or(Self::Gregorian) } + + icu_provider::gen_buffer_data_constructors!( + (prefs: CalendarPreferences) -> error: DataError, + /// Selects the [`AnyCalendarKind`] appropriate for the given [`CalendarPreferences`]. + /// + /// # Example + /// + /// ``` + /// use icu::calendar::{AnyCalendarKind, preferences::{CalendarPreferences, HijriCalendarAlgorithm}}; + /// use icu::locale::locale; + /// + /// assert_eq!(AnyCalendarKind::try_new(locale!("und").into()).unwrap(), AnyCalendarKind::Gregorian); + /// assert_eq!(AnyCalendarKind::try_new(locale!("und-US-u-ca-hebrew").into()).unwrap(), AnyCalendarKind::Hebrew); + /// assert_eq!(AnyCalendarKind::try_new(locale!("und-AF").into()).unwrap(), AnyCalendarKind::Persian); + /// assert_eq!(AnyCalendarKind::try_new(locale!("fa").into()).unwrap(), AnyCalendarKind::Persian); + /// assert_eq!(AnyCalendarKind::try_new(locale!("und-US-u-rg-thxxxx").into()).unwrap(), AnyCalendarKind::Buddhist); + /// assert_eq!( + /// AnyCalendarKind::try_new(locale!("und-US-u-ca-islamic").into()).unwrap(), + /// AnyCalendarKind::HijriTabularTypeIIFriday + /// ); + /// # assert_eq!(AnyCalendarKind::try_new("und-US-u-ca-islamic-rgsa".parse::().unwrap().into()).unwrap(), + /// # AnyCalendarKind::HijriTabularTypeIIFriday + /// # ); + /// # assert_eq!(AnyCalendarKind::try_new("und-US-u-ca-islamic-foo".parse::().unwrap().into()).unwrap(), + /// # AnyCalendarKind::Gregorian + /// # ); + /// # assert_eq!(AnyCalendarKind::try_new("und-US-u-ca-hebrew-foo".parse::().unwrap().into()).unwrap(), + /// # AnyCalendarKind::Gregorian + /// # ); + /// ``` + ); + + #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::try_new)] + pub fn try_new_unstable>( + provider: &P, + mut prefs: CalendarPreferences, + ) -> Result { + if prefs.calendar_algorithm + == Some(CalendarAlgorithm::Hijri(Some(HijriCalendarAlgorithm::Rgsa))) + { + // Resolve islamic-rgsa to the region's Hijri default. + prefs.calendar_algorithm = Some(CalendarAlgorithm::Hijri(None)); + } + + let algorithm = match prefs.calendar_algorithm { + Some(algorithm) if !matches!(algorithm, CalendarAlgorithm::Hijri(None)) => algorithm, + unresolved => DataProvider::::load( + &provider, + DataRequest { + id: DataIdentifierBorrowed::for_locale(&CalendarPreferredV1::make_locale( + prefs.locale_preferences, + )), + metadata: Default::default(), + }, + )? + .payload + .get() + .resolve(unresolved), + }; + + Ok(algorithm.try_into().unwrap_or(Self::Gregorian)) + } } impl TryFrom for AnyCalendarKind { @@ -850,9 +926,9 @@ impl Date { #[cfg(test)] mod tests { use super::*; + use crate::Ref; use crate::error::DateNewError; use crate::types::{Month, YearInput}; - use crate::Ref; #[track_caller] fn single_test_roundtrip( diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/abstract_gregorian.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/abstract_gregorian.rs index db75cbae8bc1..8d7b4fea5300 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/abstract_gregorian.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/abstract_gregorian.rs @@ -11,7 +11,7 @@ use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::preferences::CalendarAlgorithm; use crate::types::EraYear; -use crate::{types, Calendar}; +use crate::{Calendar, types}; use calendrical_calculations::rata_die::RataDie; #[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -22,7 +22,7 @@ pub(crate) trait GregorianYears: Clone + core::fmt::Debug { const EXTENDED_YEAR_OFFSET: i32 = 0; fn extended_from_era_year(&self, era: Option<&[u8]>, year: i32) - -> Result; + -> Result; fn era_year_from_extended(&self, extended_year: i32, month: u8, day: u8) -> EraYear; diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/buddhist.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/buddhist.rs index cc54c03c3a82..3055511c665a 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/buddhist.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/buddhist.rs @@ -6,9 +6,10 @@ use crate::cal::abstract_gregorian::AbstractGregorian; use crate::error::UnknownEraError; use crate::preferences::CalendarAlgorithm; use crate::{ - cal::abstract_gregorian::{impl_with_abstract_gregorian, GregorianYears}, + Date, RangeError, + cal::abstract_gregorian::{GregorianYears, impl_with_abstract_gregorian}, calendar_arithmetic::ArithmeticDate, - types, Date, RangeError, + types, }; use tinystr::tinystr; @@ -272,4 +273,24 @@ mod test { check_test_case(case); } } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Buddhist); + let reconstructed = Date::try_new_buddhist( + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Buddhist failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/coptic.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/coptic.rs index 742989e1ec91..1e61d61e8f68 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/coptic.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/coptic.rs @@ -9,7 +9,7 @@ use crate::error::{ }; use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; -use crate::{types, Calendar, Date, RangeError}; +use crate::{Calendar, Date, RangeError, types}; use calendrical_calculations::rata_die::RataDie; use tinystr::tinystr; @@ -228,11 +228,7 @@ impl Calendar for Coptic { } fn days_in_year(&self, date: &Self::DateInner) -> u16 { - if self.is_in_leap_year(date) { - 366 - } else { - 365 - } + if self.is_in_leap_year(date) { 366 } else { 365 } } fn days_in_month(&self, date: &Self::DateInner) -> u8 { @@ -351,4 +347,24 @@ mod tests { let date = Date::try_from_fields(fields, options, Coptic).unwrap(); assert_eq!(date.day_of_month().0, 6, "Day was successfully constrained"); } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Coptic); + let reconstructed = Date::try_new_coptic( + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Coptic failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/east_asian_traditional.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/east_asian_traditional.rs index aa6997be238a..03ddadf75c05 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/east_asian_traditional.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/east_asian_traditional.rs @@ -2,6 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use crate::AsCalendar; use crate::calendar_arithmetic::{ArithmeticDate, DateFieldsResolver, PackWithMD}; use crate::error::{ DateAddError, DateError, DateFromFieldsError, DateNewError, EcmaReferenceYearError, @@ -9,8 +10,7 @@ use crate::error::{ }; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::options::{DateFromFieldsOptions, Overflow}; -use crate::AsCalendar; -use crate::{types, Calendar, Date}; +use crate::{Calendar, Date, types}; use calendrical_calculations::chinese_based; use calendrical_calculations::rata_die::RataDie; use core::cmp::Ordering; @@ -360,26 +360,26 @@ impl Rules for China { /// [Yuk Tung Liu]: https://ytliu0.github.io/ChineseCalendar/table.html /// /// ```rust -/// use icu::calendar::cal::{ChineseTraditional, KoreanTraditional}; /// use icu::calendar::Date; +/// use icu::calendar::cal::{ChineseTraditional, KoreanTraditional}; /// /// let iso_a = Date::try_new_iso(2012, 4, 23).unwrap(); /// let korean_a = iso_a.to_calendar(KoreanTraditional::new()); /// let chinese_a = iso_a.to_calendar(ChineseTraditional::new()); /// /// assert_eq!(korean_a.month().number(), 3); -/// assert_eq!(korean_a.month().to_input().is_leap(), true); +/// assert!(korean_a.month().to_input().is_leap()); /// assert_eq!(chinese_a.month().number(), 4); -/// assert_eq!(chinese_a.month().to_input().is_leap(), false); +/// assert!(!chinese_a.month().to_input().is_leap()); /// /// let iso_b = Date::try_new_iso(2012, 5, 23).unwrap(); /// let korean_b = iso_b.to_calendar(KoreanTraditional::new()); /// let chinese_b = iso_b.to_calendar(ChineseTraditional::new()); /// /// assert_eq!(korean_b.month().number(), 4); -/// assert_eq!(korean_b.month().to_input().is_leap(), false); +/// assert!(!korean_b.month().to_input().is_leap()); /// assert_eq!(chinese_b.month().number(), 4); -/// assert_eq!(chinese_b.month().to_input().is_leap(), true); +/// assert!(chinese_b.month().to_input().is_leap()); /// ``` pub type KoreanTraditional = EastAsianTraditional; @@ -480,8 +480,8 @@ impl Date { /// valid range of `-9999..=9999`. /// /// ```rust - /// use icu::calendar::types::Month; /// use icu::calendar::Date; + /// use icu::calendar::types::Month; /// /// let date = Date::try_new_korean_traditional(2025, Month::new(5), 25) /// .expect("Failed to initialize Date instance."); @@ -845,8 +845,8 @@ impl Date { /// valid range of `-9999..=9999`. /// /// ```rust - /// use icu::calendar::types::Month; /// use icu::calendar::Date; + /// use icu::calendar::types::Month; /// /// let date = Date::try_new_chinese_traditional(2025, Month::new(5), 25) /// .expect("Failed to initialize Date instance."); @@ -1454,7 +1454,10 @@ mod test { } let rd = date.to_rata_die().to_i64_date(); let expected = case.expected; - assert_eq!(rd, expected, "RD from Chinese failed, with expected: {expected} and calculated: {rd}, for test case: {case:?}"); + assert_eq!( + rd, expected, + "RD from Chinese failed, with expected: {expected} and calculated: {rd}, for test case: {case:?}" + ); } } @@ -1469,7 +1472,10 @@ mod test { let chinese = Date::from_rata_die(rata_die, ChineseTraditional::new()); let result = chinese.to_rata_die(); - assert_eq!(result, rata_die, "Failed roundtrip RD -> Chinese -> RD for RD: {rata_die:?}, with calculated: {result:?} from Chinese date:\n{chinese:?}"); + assert_eq!( + result, rata_die, + "Failed roundtrip RD -> Chinese -> RD for RD: {rata_die:?}, with calculated: {result:?} from Chinese date:\n{chinese:?}" + ); rd += 7043; iters += 1; @@ -1744,7 +1750,10 @@ mod test { let iso = Date::try_new_iso(year, month, day).unwrap(); let chinese = iso.to_calendar(ChineseTraditional::new()); let result = chinese.to_calendar(Iso); - assert_eq!(iso, result, "ISO to Chinese roundtrip failed!\nIso: {iso:?}\nChinese: {chinese:?}\nResult: {result:?}"); + assert_eq!( + iso, result, + "ISO to Chinese roundtrip failed!\nIso: {iso:?}\nChinese: {chinese:?}\nResult: {result:?}" + ); } } @@ -1863,7 +1872,7 @@ mod test { #[test] #[ignore] // slow, network fn test_against_hong_kong_observatory_data() { - use crate::{cal::Gregorian, Date}; + use crate::{Date, cal::Gregorian}; let mut related_iso = 1900; let mut lunar_month = Month::new(11); @@ -1934,7 +1943,7 @@ mod test { #[test] #[ignore] // network fn test_against_kasi_data() { - use crate::{cal::Gregorian, Date}; + use crate::{Date, cal::Gregorian}; // TODO: query KASI directly let uri = "https://gist.githubusercontent.com/Manishearth/d8c94a7df22a9eacefc4472a5805322e/raw/e1ea3b0aa52428686bb3a9cd0f262878515e16c1/resolved.json"; @@ -2119,4 +2128,44 @@ mod test { packed_roundtrip_single(RANDOM2, Some(5), 18 + 2); packed_roundtrip_single(RANDOM2, Some(12), 18 + 5); } + + #[test] + fn test_chinese_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, ChineseTraditional::new()); + let reconstructed = Date::try_new_chinese_traditional( + date.year().extended_year(), + date.month().to_input(), + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Chinese Traditional failed for RD {:?}", + rd + ); + } + } + + #[test] + fn test_korean_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, KoreanTraditional::new()); + let reconstructed = Date::try_new_korean_traditional( + date.year().extended_year(), + date.month().to_input(), + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Korean Traditional failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/ethiopian.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/ethiopian.rs index 9a19f278f5bd..2424dfbf6732 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/ethiopian.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/ethiopian.rs @@ -2,8 +2,8 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::cal::coptic::{CopticDateInner, CopticYear}; use crate::cal::Coptic; +use crate::cal::coptic::{CopticDateInner, CopticYear}; use crate::calendar_arithmetic::{ArithmeticDate, DateFieldsResolver}; use crate::error::{ DateAddError, DateFromFieldsError, DateNewError, EcmaReferenceYearError, UnknownEraError, @@ -11,7 +11,7 @@ use crate::error::{ use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::types::DateFields; -use crate::{types, Calendar, Date, RangeError}; +use crate::{Calendar, Date, RangeError, types}; use calendrical_calculations::rata_die::RataDie; use tinystr::tinystr; @@ -182,7 +182,7 @@ impl Calendar for Ethiopian { } fn to_rata_die(&self, date: &Self::DateInner) -> RataDie { - date.0 .0.to_rata_die() + date.0.0.to_rata_die() } fn has_cheap_iso_conversion(&self) -> bool { @@ -227,7 +227,7 @@ impl Calendar for Ethiopian { } fn year_info(&self, date: &Self::DateInner) -> Self::Year { - let coptic_year = date.0 .0.year(); + let coptic_year = date.0.0.year(); let extended_year = coptic_year.to_ethiopian_year(self.0); if self.0 == EthiopianEraStyle::AmeteAlem || extended_year <= 0 { @@ -306,8 +306,8 @@ impl Date { /// Years are interpreted according to the provided `era_style`. /// /// ```rust - /// use icu::calendar::cal::EthiopianEraStyle; /// use icu::calendar::Date; + /// use icu::calendar::cal::EthiopianEraStyle; /// /// let date_ethiopian = /// Date::try_new_ethiopian(EthiopianEraStyle::AmeteMihret, 2014, 8, 25) @@ -413,4 +413,28 @@ mod test { 1 ); } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die( + rd, + Ethiopian::new_with_era_style(EthiopianEraStyle::AmeteMihret), + ); + let reconstructed = Date::try_new_ethiopian( + EthiopianEraStyle::AmeteMihret, + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Ethiopian failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/gregorian.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/gregorian.rs index 5e4bb780c1be..4f357e130fa3 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/gregorian.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/gregorian.rs @@ -3,12 +3,12 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::cal::abstract_gregorian::{ - impl_with_abstract_gregorian, AbstractGregorian, GregorianYears, + AbstractGregorian, GregorianYears, impl_with_abstract_gregorian, }; use crate::calendar_arithmetic::ArithmeticDate; use crate::error::UnknownEraError; use crate::preferences::CalendarAlgorithm; -use crate::{types, Date, RangeError}; +use crate::{Date, RangeError, types}; use tinystr::tinystr; impl_with_abstract_gregorian!(Gregorian, GregorianDateInner, CeBce, _x, CeBce); @@ -317,4 +317,24 @@ mod test { } } } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Gregorian); + let reconstructed = Date::try_new_gregorian( + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Gregorian failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/hebrew.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/hebrew.rs index 46f1e99ef842..eef0d242434d 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/hebrew.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/hebrew.rs @@ -2,6 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use crate::RangeError; use crate::calendar_arithmetic::{ArithmeticDate, DateFieldsResolver, PackWithMD}; use crate::error::{ DateAddError, DateFromFieldsError, DateNewError, EcmaReferenceYearError, LunisolarDateError, @@ -10,8 +11,7 @@ use crate::error::{ use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::options::{DateFromFieldsOptions, Overflow}; use crate::types::{DateFields, LeapStatus, Month, MonthInfo}; -use crate::RangeError; -use crate::{types, Calendar, Date}; +use crate::{Calendar, Date, types}; use ::tinystr::tinystr; use calendrical_calculations::hebrew_keviyah::{Keviyah, YearInfo}; use calendrical_calculations::rata_die::RataDie; @@ -420,8 +420,8 @@ impl Date { /// valid range of `-9999..=9999`. /// /// ```rust - /// use icu::calendar::types::Month; /// use icu::calendar::Date; + /// use icu::calendar::types::Month; /// /// let date = Date::try_new_hebrew_v2(5782, Month::leap(5), 7) /// .expect("Failed to initialize Date instance."); @@ -620,4 +620,24 @@ mod tests { // https://www.hebcal.com/converter?hd=1&hm=Tishrei&hy=3760&h2g=1 assert_eq!(dt.weekday(), Weekday::Saturday); } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Hebrew); + let reconstructed = Date::try_new_hebrew_v2( + date.year().extended_year(), + date.month().to_input(), + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Hebrew failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/hijri.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/hijri.rs index f0042886d9f9..391337c99e7c 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/hijri.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/hijri.rs @@ -12,8 +12,8 @@ use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::types::DateFields; use crate::types::Month; -use crate::{types, Calendar, Date}; use crate::{AsCalendar, RangeError}; +use crate::{Calendar, Date, types}; use calendrical_calculations::rata_die::RataDie; use core::cmp::Ordering; use core::fmt::Debug; @@ -836,10 +836,10 @@ fn computer_reference_years() { .extended_year; let y_30 = compute_hijri_reference_year(month, 30, rules).map(|y| y.extended_year); - if let Some(y_30) = y_30 { - if y_29 != y_30 { - println!("({month}, 30..) => {y_30},") - } + if let Some(y_30) = y_30 + && y_29 != y_30 + { + println!("({month}, 30..) => {y_30},") } if month == 11 { let y_1 = compute_hijri_reference_year(month, 1, rules) @@ -1070,8 +1070,8 @@ impl>, R: Rules> Date { /// valid range of `-9999..=9999`. /// /// ```rust - /// use icu::calendar::cal::Hijri; /// use icu::calendar::Date; + /// use icu::calendar::cal::Hijri; /// /// let hijri = Hijri::new_umm_al_qura(); /// diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/indian.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/indian.rs index ea3a916def06..bfa1b403fe8f 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/indian.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/indian.rs @@ -10,7 +10,7 @@ use crate::error::{ use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::types::DateFields; -use crate::{types, Calendar, Date, RangeError}; +use crate::{Calendar, Date, RangeError, types}; use calendrical_calculations::rata_die::RataDie; use tinystr::tinystr; @@ -210,11 +210,7 @@ impl Calendar for Indian { } fn days_in_year(&self, date: &Self::DateInner) -> u16 { - if self.is_in_leap_year(date) { - 366 - } else { - 365 - } + if self.is_in_leap_year(date) { 366 } else { 365 } } fn days_in_month(&self, date: &Self::DateInner) -> u8 { @@ -533,7 +529,11 @@ mod tests { let indian_i = Date::from_rata_die(rd_i, Indian); let indian_j = Date::from_rata_die(rd_j, Indian); - assert_eq!(i.cmp(&j), indian_i.cmp(&indian_j), "Directionality test failed for i: {i}, j: {j}, indian_i: {indian_i:?}, indian_j: {indian_j:?}"); + assert_eq!( + i.cmp(&j), + indian_i.cmp(&indian_j), + "Directionality test failed for i: {i}, j: {j}, indian_i: {indian_i:?}, indian_j: {indian_j:?}" + ); } } } @@ -546,8 +546,32 @@ mod tests { let indian_i = Date::from_rata_die(RataDie::new(i), Indian); let indian_j = Date::from_rata_die(RataDie::new(j), Indian); - assert_eq!(i.cmp(&j), indian_i.cmp(&indian_j), "Directionality test failed for i: {i}, j: {j}, indian_i: {indian_i:?}, indian_j: {indian_j:?}"); + assert_eq!( + i.cmp(&j), + indian_i.cmp(&indian_j), + "Directionality test failed for i: {i}, j: {j}, indian_i: {indian_i:?}, indian_j: {indian_j:?}" + ); } } } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Indian); + let reconstructed = Date::try_new_indian( + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Indian failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/iso.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/iso.rs index e0bdc55dd10c..02826938d3b4 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/iso.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/iso.rs @@ -3,11 +3,11 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::cal::abstract_gregorian::{ - impl_with_abstract_gregorian, AbstractGregorian, GregorianYears, + AbstractGregorian, GregorianYears, impl_with_abstract_gregorian, }; use crate::calendar_arithmetic::ArithmeticDate; use crate::error::UnknownEraError; -use crate::{types, Date, RangeError}; +use crate::{Date, RangeError, types}; use tinystr::tinystr; /// The [ISO-8601 Calendar](https://en.wikipedia.org/wiki/ISO_8601#Dates) @@ -387,4 +387,24 @@ mod test { check(1461, 4, 12, 31); // leap year check(1462, 5, 1, 1); } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Iso); + let reconstructed = Date::try_new_iso( + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "ISO failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/japanese.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/japanese.rs index 2296485e6411..712dfde17854 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/japanese.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/japanese.rs @@ -3,15 +3,14 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::cal::abstract_gregorian::{ - impl_with_abstract_gregorian, AbstractGregorian, GregorianYears, + AbstractGregorian, GregorianYears, impl_with_abstract_gregorian, }; use crate::cal::gregorian::CeBce; use crate::calendar_arithmetic::ArithmeticDate; use crate::error::{DateError, UnknownEraError}; -use crate::provider::{CalendarJapaneseModernV1, EraStartDate, PackedEra}; -use crate::{types, AsCalendar, Date}; +use crate::provider::{CalendarJapaneseModernV1, EraStartDate, JapaneseEras}; +use crate::{AsCalendar, Date, types}; use icu_provider::prelude::*; -use tinystr::{tinystr, TinyAsciiStr}; /// The [Japanese Calendar] (with modern eras only) /// @@ -37,9 +36,7 @@ use tinystr::{tinystr, TinyAsciiStr}; /// These eras are loaded from data, requiring a data provider capable of providing [`CalendarJapaneseModernV1`] /// data. #[derive(Clone, Debug, Default, Copy)] -pub struct Japanese { - post_reiwa_era: Option, -} +pub struct Japanese(JapaneseEras); impl Japanese { /// Creates a new [`Japanese`] using only modern eras (post-meiji) from compiled data. @@ -49,12 +46,7 @@ impl Japanese { /// [📚 Help choosing a constructor](icu_provider::constructors) #[cfg(feature = "compiled_data")] pub const fn new() -> Self { - const { - Self { - post_reiwa_era: crate::provider::Baked::SINGLETON_CALENDAR_JAPANESE_MODERN_V1 - .last_after_reiwa(), - } - } + const { Self(*crate::provider::Baked::SINGLETON_CALENDAR_JAPANESE_MODERN_V1) } } icu_provider::gen_buffer_data_constructors!(() -> error: DataError, @@ -69,65 +61,7 @@ impl Japanese { pub fn try_new_unstable + ?Sized>( provider: &D, ) -> Result { - Ok(Self { - post_reiwa_era: provider - .load(Default::default())? - .payload - .get() - .last_after_reiwa(), - }) - } -} - -impl Japanese { - fn eras(self) -> impl Iterator, u8)> { - self.post_reiwa_era.map(|p| p.unpack()).into_iter().chain([ - ( - EraStartDate { - year: 2019, - month: 5, - day: 1, - }, - tinystr!(8, "reiwa"), - 6, - ), - ( - EraStartDate { - year: 1989, - month: 1, - day: 8, - }, - tinystr!(8, "heisei"), - 5, - ), - ( - EraStartDate { - year: 1926, - month: 12, - day: 25, - }, - tinystr!(8, "showa"), - 4, - ), - ( - EraStartDate { - year: 1912, - month: 7, - day: 30, - }, - tinystr!(8, "taisho"), - 3, - ), - ( - EraStartDate { - year: 1868, - month: 10, - day: 23, - }, - tinystr!(8, "meiji"), - 2, - ), - ]) + Ok(Self(*provider.load(Default::default())?.payload.get())) } } @@ -142,8 +76,9 @@ impl GregorianYears for Japanese { } let (start, ..) = self + .0 .eras() - .find(|(_, name, _)| era == Some(name.as_bytes())) + .rfind(|(_, name, _)| era == Some(name.as_bytes())) .ok_or(UnknownEraError)?; Ok(year - 1 + start.year) @@ -152,17 +87,18 @@ impl GregorianYears for Japanese { fn era_year_from_extended(&self, year: i32, month: u8, day: u8) -> types::EraYear { let date: EraStartDate = EraStartDate { year, month, day }; - let ret = if let Some((start, code, idx)) = self.eras().find(|&(start, ..)| date >= start) { - types::EraYear { - era: code.resize(), - era_index: Some(idx), - year: year - start.year + 1, - extended_year: year, - ambiguity: types::YearAmbiguity::CenturyRequired, - } - } else { - CeBce.era_year_from_extended(year, month, day) - }; + let ret = + if let Some((start, code, idx)) = self.0.eras().rfind(|&(start, ..)| date >= start) { + types::EraYear { + era: code.resize(), + era_index: Some(idx), + year: year - start.year + 1, + extended_year: year, + ambiguity: types::YearAmbiguity::CenturyRequired, + } + } else { + CeBce.era_year_from_extended(year, month, day) + }; // Special case: Meiji 1 to 5 are treated as CE. // @@ -267,9 +203,10 @@ impl Date { #[cfg(test)] mod tests { use super::*; + use tinystr::tinystr; - const CALENDAR: Japanese = Japanese { - post_reiwa_era: Some(PackedEra::pack( + const CALENDAR: Japanese = Japanese( + JapaneseEras::with_last_era( EraStartDate { year: 2086, month: 11, @@ -277,8 +214,9 @@ mod tests { }, tinystr!(8, "fuzu"), 8, - )), - }; + ) + .unwrap(), + ); fn single_test_roundtrip(era: &str, year: i32, month: u8, day: u8) { let date = Date::try_new_japanese_with_calendar(era, year, month, day, CALENDAR) @@ -380,4 +318,26 @@ mod tests { single_test_era_range_roundtrip("ce", 1873, 5, 1, "meiji", 6); single_test_era_range_roundtrip("ce", 1874, 1, 1, "meiji", 7); } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Japanese::new()); + let reconstructed = Date::try_new_japanese_with_calendar( + date.era_year().era.as_str(), + date.era_year().year, + date.month().ordinal, + date.day_of_month().0, + Japanese::new(), + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Japanese failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/julian.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/julian.rs index aca19f093576..6fb03fcd9590 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/julian.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/julian.rs @@ -10,7 +10,7 @@ use crate::error::{ use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::types::DateFields; -use crate::{types, Calendar, Date, RangeError}; +use crate::{Calendar, Date, RangeError, types}; use calendrical_calculations::rata_die::RataDie; use tinystr::tinystr; @@ -71,6 +71,47 @@ use tinystr::tinystr; /// The calendar was used [incorrectly](https://en.wikipedia.org/wiki/Julian_calendar#Leap_year_error) /// for a while after adoption, so the first year where the months align with this proleptic /// implementation is probably 4 CE. +/// +/// # Examples +/// +/// The `Julian` variant of [`AnyCalendar`](crate::AnyCalendar) can be used to implement a date that +/// switches between [`Julian`] and [`Gregorian`](crate::cal::Gregorian). +/// +/// ```rust +/// use icu::calendar::AnyCalendar; +/// use icu::calendar::AnyCalendarKind; +/// use icu::calendar::Date; +/// use icu::calendar::error::RangeError; +/// use icu::calendar::Gregorian; +/// +/// fn historical_french_date(year: i32, month: u8, day: u8) -> Result, RangeError> { +/// if (year, month, day) <= (1582, 10, 4) { +/// // October 4, 1582 was the last day of the Julian calendar in France +/// Ok(Date::try_new_julian(year, month, day)?.to_any()) +/// } else if (year, month, day) >= (1582, 10, 15) { +/// // October 15, 1582 was the first day of the Gregorian calendar in France +/// Ok(Date::try_new_gregorian(year, month, day)?.to_any()) +/// } else { +/// // October 5-14 did not exist in France in 1582 +/// Err(RangeError { +/// field: "day", +/// value: day.into(), +/// min: 15, +/// max: 4 +/// }) +/// } +/// } +/// +/// let julian = historical_french_date(1500, 1, 1).unwrap(); +/// let gregorian = historical_french_date(1600, 1, 1).unwrap(); +/// +/// assert_eq!(julian.calendar().kind(), AnyCalendarKind::Julian); +/// assert_eq!(gregorian.calendar().kind(), AnyCalendarKind::Gregorian); +/// +/// // Check the resolved dates in the proleptic Gregorian calendar: +/// assert_eq!(julian.to_calendar(Gregorian), Date::try_new_gregorian(1500, 1, 10).unwrap()); +/// assert_eq!(gregorian.to_calendar(Gregorian), Date::try_new_gregorian(1600, 1, 1).unwrap()); +/// ``` #[derive(Copy, Clone, Debug, Hash, Default, Eq, PartialEq, PartialOrd, Ord)] #[allow(clippy::exhaustive_structs)] // this type is stable pub struct Julian; @@ -506,4 +547,24 @@ mod test { Date::try_new_julian(-4, 2, 29).unwrap(); Date::try_new_julian(2020, 2, 29).unwrap(); } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Julian); + let reconstructed = Date::try_new_julian( + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Julian failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/persian.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/persian.rs index 146f0d8c1909..637f4a81776c 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/persian.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/persian.rs @@ -10,7 +10,7 @@ use crate::error::{ use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::types::DateFields; -use crate::{types, Calendar, Date, RangeError}; +use crate::{Calendar, Date, RangeError, types}; use ::tinystr::tinystr; use calendrical_calculations::rata_die::RataDie; @@ -155,11 +155,7 @@ impl Calendar for Persian { } fn days_in_year(&self, date: &Self::DateInner) -> u16 { - if self.is_in_leap_year(date) { - 366 - } else { - 365 - } + if self.is_in_leap_year(date) { 366 } else { 365 } } fn days_in_month(&self, date: &Self::DateInner) -> u8 { @@ -751,4 +747,24 @@ mod tests { assert_eq!(iso_date.to_calendar(Persian), persian_date); } } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Persian); + let reconstructed = Date::try_new_persian( + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Persian failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/cal/roc.rs b/deps/crates/vendor/icu_calendar-v2/src/cal/roc.rs index d0cf048c10f5..d4af987df3f3 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/cal/roc.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/cal/roc.rs @@ -3,12 +3,12 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::cal::abstract_gregorian::{ - impl_with_abstract_gregorian, AbstractGregorian, GregorianYears, + AbstractGregorian, GregorianYears, impl_with_abstract_gregorian, }; use crate::calendar_arithmetic::ArithmeticDate; use crate::error::UnknownEraError; use crate::preferences::CalendarAlgorithm; -use crate::{types, Date, RangeError}; +use crate::{Date, RangeError, types}; use tinystr::tinystr; /// The [Republic of China Calendar](https://en.wikipedia.org/wiki/Republic_of_China_calendar) @@ -171,8 +171,10 @@ mod test { roc_from_rd.day_of_month().0, ) .unwrap(); - assert_eq!(roc_from_rd, roc_from_case, - "ROC date from RD not equal to ROC generated from manually-input ymd\nCase: {case:?}\nRD: {roc_from_rd:?}\nManual: {roc_from_case:?}"); + assert_eq!( + roc_from_rd, roc_from_case, + "ROC date from RD not equal to ROC generated from manually-input ymd\nCase: {case:?}\nRD: {roc_from_rd:?}\nManual: {roc_from_case:?}" + ); } #[test] @@ -326,4 +328,24 @@ mod test { } } } + + #[test] + fn test_constructor_roundtrip() { + let rds = crate::tests::get_interesting_rds(); + for rd in rds { + let date = Date::from_rata_die(rd, Roc); + let reconstructed = Date::try_new_roc( + date.year().extended_year(), + date.month().ordinal, + date.day_of_month().0, + ) + .unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Roc failed for RD {:?}", + rd + ); + } + } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/calendar.rs b/deps/crates/vendor/icu_calendar-v2/src/calendar.rs index 25bfa4121980..10d824838adf 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/calendar.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/calendar.rs @@ -4,12 +4,12 @@ use calendrical_calculations::rata_die::RataDie; +use crate::Iso; use crate::cal::iso::IsoDateInner; use crate::error::{DateAddError, DateError, DateFromFieldsError, DateNewError}; use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::types::{self, Month, YearInput}; -use crate::Iso; use core::fmt; #[cfg(doc)] diff --git a/deps/crates/vendor/icu_calendar-v2/src/calendar_arithmetic.rs b/deps/crates/vendor/icu_calendar-v2/src/calendar_arithmetic.rs index f655ea0e68c2..a2cb514c8c15 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/calendar_arithmetic.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/calendar_arithmetic.rs @@ -6,13 +6,13 @@ use calendrical_calculations::rata_die::RataDie; use crate::duration::DateDuration; use crate::error::{ - range_check, DateAddError, DateFromFieldsError, DateNewError, EcmaReferenceYearError, - LunisolarDateError, MonthError, UnknownEraError, + DateAddError, DateFromFieldsError, DateNewError, EcmaReferenceYearError, LunisolarDateError, + MonthError, UnknownEraError, range_check, }; use crate::options::{DateAddOptions, DateDifferenceOptions, DateDurationUnit}; use crate::options::{DateFromFieldsOptions, MissingFieldsStrategy, Overflow}; use crate::types::{DateFields, Month}; -use crate::{types, Calendar, DateError, RangeError}; +use crate::{Calendar, DateError, RangeError, types}; use core::cmp::Ordering; use core::fmt::Debug; use core::hash::{Hash, Hasher}; @@ -432,7 +432,7 @@ impl ArithmeticDate { } None => match missing_fields_strategy { MissingFieldsStrategy::Reject => { - return Err(DateFromFieldsError::NotEnoughFields) + return Err(DateFromFieldsError::NotEnoughFields); } MissingFieldsStrategy::Ecma => { let (m, d) = match (fields.month, fields.month_code, fields.ordinal_month) { @@ -464,10 +464,10 @@ impl ArithmeticDate { let extended_year = calendar.extended_year_from_era_year_unchecked(era, era_year)?; let year = calendar.year_info_from_extended(extended_year); - if let Some(extended_year) = fields.extended_year { - if calendar.extended_from_year_info(year) != extended_year { - return Err(DateFromFieldsError::InconsistentYear); - } + if let Some(extended_year) = fields.extended_year + && calendar.extended_from_year_info(year) != extended_year + { + return Err(DateFromFieldsError::InconsistentYear); } year } @@ -478,10 +478,10 @@ impl ArithmeticDate { let month = match (fields.month_code, fields.month) { (_, Some(month)) => { let computed_month = calendar.ordinal_from_month(year, month, overflow)?; - if let Some(ordinal_month) = fields.ordinal_month { - if computed_month != ordinal_month { - return Err(DateFromFieldsError::InconsistentMonth); - } + if let Some(ordinal_month) = fields.ordinal_month + && computed_month != ordinal_month + { + return Err(DateFromFieldsError::InconsistentMonth); } computed_month } @@ -491,10 +491,10 @@ impl ArithmeticDate { None => Month::try_from_utf8(month_code)?, }; let computed_month = calendar.ordinal_from_month(year, validated, overflow)?; - if let Some(ordinal_month) = fields.ordinal_month { - if computed_month != ordinal_month { - return Err(DateFromFieldsError::InconsistentMonth); - } + if let Some(ordinal_month) = fields.ordinal_month + && computed_month != ordinal_month + { + return Err(DateFromFieldsError::InconsistentMonth); } computed_month } @@ -944,11 +944,7 @@ impl ArithmeticDate { Ok(d) => d, Err(_) => { debug_assert!(false, "rata die diff out of i32 range"); - if diff > 0 { - i32::MAX - } else { - i32::MIN - } + if diff > 0 { i32::MAX } else { i32::MIN } } }; if matches!(options.largest_unit, Some(DateDurationUnit::Weeks)) { @@ -1284,8 +1280,8 @@ impl<'a, C: DateFieldsResolver> SurpassesChecker<'a, C> { mod tests { use super::*; use crate::{ - cal::{coptic::CopticYear, *}, Date, + cal::{coptic::CopticYear, *}, }; #[test] @@ -1375,12 +1371,16 @@ mod tests { ]; // Valid RDs can represent all valid years - assert!(lowest_years - .iter() - .all(|y| y <= CONSTRUCTOR_YEAR_RANGE.start())); - assert!(highest_years - .iter() - .all(|y| y >= CONSTRUCTOR_YEAR_RANGE.end())); + assert!( + lowest_years + .iter() + .all(|y| y <= CONSTRUCTOR_YEAR_RANGE.start()) + ); + assert!( + highest_years + .iter() + .all(|y| y >= CONSTRUCTOR_YEAR_RANGE.end()) + ); // All years are 21-bits assert!(-lowest_years.iter().copied().min().unwrap() < 1 << 20); diff --git a/deps/crates/vendor/icu_calendar-v2/src/chrono.rs b/deps/crates/vendor/icu_calendar-v2/src/chrono.rs index d7e7d329bf76..f1773b68df7b 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/chrono.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/chrono.rs @@ -2,11 +2,11 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use crate::Date; +use crate::Gregorian; use crate::cal::abstract_gregorian::AbstractGregorianYear; use crate::cal::gregorian::GregorianDateInner; use crate::calendar_arithmetic::ArithmeticDate; -use crate::Date; -use crate::Gregorian; impl From for Date { fn from(chrono: chrono::NaiveDate) -> Self { @@ -35,10 +35,14 @@ fn assert_range() { use crate::types::RataDie; use chrono::Datelike; - assert!(VALID_RD_RANGE - .contains(&(RataDie::new(0) + chrono::NaiveDate::MIN.num_days_from_ce() as i64))); - assert!(VALID_RD_RANGE - .contains(&(RataDie::new(0) + chrono::NaiveDate::MAX.num_days_from_ce() as i64))); + assert!( + VALID_RD_RANGE + .contains(&(RataDie::new(0) + chrono::NaiveDate::MIN.num_days_from_ce() as i64)) + ); + assert!( + VALID_RD_RANGE + .contains(&(RataDie::new(0) + chrono::NaiveDate::MAX.num_days_from_ce() as i64)) + ); } impl From for crate::types::Weekday { diff --git a/deps/crates/vendor/icu_calendar-v2/src/date.rs b/deps/crates/vendor/icu_calendar-v2/src/date.rs index d58854e23bff..0195c566abc3 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/date.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/date.rs @@ -8,7 +8,7 @@ use crate::options::DateFromFieldsOptions; use crate::options::{DateAddOptions, DateDifferenceOptions}; use crate::types::{CyclicYear, EraYear, IsoWeekOfYear}; use crate::week::{RelativeUnit, WeekCalculator, WeekOf}; -use crate::{types, Calendar, Iso}; +use crate::{Calendar, Iso, types}; #[cfg(feature = "alloc")] use alloc::rc::Rc; #[cfg(feature = "alloc")] @@ -170,9 +170,9 @@ impl Date { /// # Examples /// /// ```rust - /// use icu::calendar::types::{Month, YearInput}; /// use icu::calendar::Date; /// use icu::calendar::Iso; + /// use icu::calendar::types::{Month, YearInput}; /// /// // Example: creation of ISO date from integers. /// let date_iso = Date::try_new(1970.into(), Month::new(1), 2, Iso) @@ -211,9 +211,9 @@ impl Date { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Gregorian; /// use icu::calendar::types::DateFields; - /// use icu::calendar::Date; /// /// let mut fields = DateFields::default(); /// fields.extended_year = Some(2000); @@ -246,7 +246,7 @@ impl Date { /// described on the [`Date`] type instead clamping the result: /// /// ```rust - /// use icu::calendar::{types::RataDie, Date, Gregorian}; + /// use icu::calendar::{Date, Gregorian, types::RataDie}; /// /// let rd = RataDie::new(1_000_000_000); /// assert_ne!(Date::from_rata_die(rd, Gregorian).to_rata_die(), rd); @@ -415,8 +415,8 @@ impl Date { /// # Examples /// /// ``` - /// use icu::calendar::types::DateDuration; /// use icu::calendar::Date; + /// use icu::calendar::types::DateDuration; /// /// let d1 = Date::try_new_iso(2020, 1, 1).unwrap(); /// let d2 = Date::try_new_iso(2025, 10, 2).unwrap(); @@ -431,9 +431,9 @@ impl Date { /// Reversing the order of parameters does not necessarily produce the inverse result: /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::options::{DateDifferenceOptions, DateDurationUnit}; /// use icu::calendar::types::DateDuration; - /// use icu::calendar::Date; /// /// let d1 = Date::try_new_iso(2025, 9, 30).unwrap(); /// let d2 = Date::try_new_iso(2025, 10, 31).unwrap(); @@ -528,8 +528,8 @@ impl Date { /// # Examples /// /// ``` - /// use icu::calendar::types::IsoWeekOfYear; /// use icu::calendar::Date; + /// use icu::calendar::types::IsoWeekOfYear; /// /// let date = Date::try_new_iso(2022, 8, 26).unwrap(); /// @@ -685,9 +685,9 @@ impl Copy for Date where A: AsCalendar + Copy {} mod tests { use super::*; use crate::{ + Gregorian, cal::{Buddhist, Hebrew}, types::{Month, Weekday}, - Gregorian, }; #[test] diff --git a/deps/crates/vendor/icu_calendar-v2/src/duration.rs b/deps/crates/vendor/icu_calendar-v2/src/duration.rs index b58f05f2b2a4..aa4961d276d1 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/duration.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/duration.rs @@ -22,11 +22,11 @@ use crate::error::DateDurationParseError; /// # Example /// /// ```rust +/// use icu::calendar::Date; /// use icu::calendar::options::DateDifferenceOptions; /// use icu::calendar::options::DateDurationUnit; /// use icu::calendar::types::DateDuration; /// use icu::calendar::types::Weekday; -/// use icu::calendar::Date; /// /// // Creating ISO date: 1992-09-02. /// let mut date_iso = Date::try_new_iso(1992, 9, 2) diff --git a/deps/crates/vendor/icu_calendar-v2/src/error.rs b/deps/crates/vendor/icu_calendar-v2/src/error.rs index e695cbeb339b..c8f416ebf0ec 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/error.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/error.rs @@ -34,10 +34,10 @@ pub enum DateError { /// /// ``` /// # #![allow(deprecated)] - /// use icu::calendar::cal::Hebrew; - /// use icu::calendar::types::Month; /// use icu::calendar::Date; /// use icu::calendar::DateError; + /// use icu::calendar::cal::Hebrew; + /// use icu::calendar::types::Month; /// /// Date::try_new_from_codes(None, 5784, Month::leap(5).code(), 1, Hebrew) /// .expect("5784 is a leap year"); @@ -63,9 +63,9 @@ pub enum LunisolarDateError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::error::LunisolarDateError; /// use icu::calendar::types::Month; - /// use icu::calendar::Date; /// /// let err = Date::try_new_hebrew_v2(5785, Month::new(5), 50) /// .expect_err("no month has 50 days"); @@ -82,9 +82,9 @@ pub enum LunisolarDateError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::error::LunisolarDateError; /// use icu::calendar::types::Month; - /// use icu::calendar::Date; /// /// Date::try_new_hebrew_v2(5784, Month::leap(5), 1) /// .expect("5784 is a leap year"); @@ -101,9 +101,9 @@ pub enum LunisolarDateError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::error::LunisolarDateError; /// use icu::calendar::types::Month; - /// use icu::calendar::Date; /// /// let err = Date::try_new_hebrew_v2(5785, Month::leap(1), 1) /// .expect_err("Tishrei does not have a leap month"); @@ -117,9 +117,9 @@ pub enum LunisolarDateError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::error::LunisolarDateError; /// use icu::calendar::types::Month; - /// use icu::calendar::Date; /// /// let err = Date::try_new_hebrew_v2(56812, Month::leap(5), 1) /// .expect_err("56812 is too big"); @@ -143,11 +143,11 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` + /// use icu::calendar::Date; + /// use icu::calendar::Iso; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::error::RangeError; /// use icu::calendar::types::DateFields; - /// use icu::calendar::Date; - /// use icu::calendar::Iso; /// /// let mut fields = DateFields::default(); /// fields.extended_year = Some(2000); @@ -169,11 +169,11 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` + /// use icu::calendar::Date; + /// use icu::calendar::Iso; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::error::RangeError; /// use icu::calendar::types::DateFields; - /// use icu::calendar::Date; - /// use icu::calendar::Iso; /// /// let mut fields = DateFields::default(); /// fields.extended_year = Some(2000); @@ -198,10 +198,10 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` - /// use icu::calendar::error::DateFromFieldsError; - /// use icu::calendar::types::DateFields; /// use icu::calendar::Date; /// use icu::calendar::Iso; + /// use icu::calendar::error::DateFromFieldsError; + /// use icu::calendar::types::DateFields; /// /// let mut fields = DateFields::default(); /// fields.extended_year = Some(2000); @@ -220,10 +220,10 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Hebrew; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::types::{DateFields, Month}; - /// use icu::calendar::Date; /// /// let mut fields = DateFields::default(); /// fields.extended_year = Some(5783); @@ -241,10 +241,10 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Hebrew; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::types::{DateFields, Month}; - /// use icu::calendar::Date; /// /// let mut fields = DateFields::default(); /// fields.extended_year = Some(5783); @@ -262,10 +262,10 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Hebrew; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::types::DateFields; - /// use icu::calendar::Date; /// /// let mut fields = DateFields::default(); /// fields.era = Some(b"ce"); // valid in Gregorian, but not Hebrew @@ -285,10 +285,10 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Japanese; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::types::DateFields; - /// use icu::calendar::Date; /// /// let mut fields = DateFields::default(); /// fields.era = Some(b"reiwa"); @@ -314,10 +314,10 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Hebrew; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::types::{DateFields, Month}; - /// use icu::calendar::Date; /// use tinystr::tinystr; /// /// let mut fields = DateFields::default(); @@ -343,10 +343,10 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` - /// use icu::calendar::error::DateFromFieldsError; - /// use icu::calendar::types::{DateFields, Month}; /// use icu::calendar::Date; /// use icu::calendar::Iso; + /// use icu::calendar::error::DateFromFieldsError; + /// use icu::calendar::types::{DateFields, Month}; /// /// let mut fields = DateFields::default(); /// fields.extended_year = Some(2000); @@ -366,10 +366,10 @@ pub enum DateFromFieldsError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Hebrew; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::types::DateFields; - /// use icu::calendar::Date; /// use tinystr::tinystr; /// /// let mut fields = DateFields::default(); @@ -447,10 +447,10 @@ pub enum DateAddError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::error::DateAddError; /// use icu::calendar::options::{DateAddOptions, Overflow}; /// use icu::calendar::types::DateDuration; - /// use icu::calendar::Date; /// /// // There is a day 31 in October but not in November. /// let d = Date::try_new_iso(2025, 10, 31).unwrap(); @@ -477,11 +477,11 @@ pub enum DateAddError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Hebrew; /// use icu::calendar::error::DateAddError; /// use icu::calendar::options::{DateAddOptions, Overflow}; /// use icu::calendar::types::{DateDuration, Month}; - /// use icu::calendar::Date; /// /// // Hebrew year 5784 is a leap year, 5785 is not. /// // Adar I (the leap month) is month 5 in a leap year. @@ -505,9 +505,9 @@ pub enum DateAddError { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::error::DateAddError; /// use icu::calendar::types::DateDuration; - /// use icu::calendar::Date; /// /// let d = Date::try_new_iso(2025, 1, 1).unwrap(); /// let duration = DateDuration::for_years(1_000_000); @@ -529,10 +529,10 @@ impl core::error::Error for DateAddError {} /// # Examples /// /// ``` +/// use icu::calendar::Date; /// use icu::calendar::error::MismatchedCalendarError; /// use icu::calendar::options::DateDifferenceOptions; /// use icu::calendar::options::DateDurationUnit; -/// use icu::calendar::Date; /// /// let d1 = Date::try_new_gregorian(2000, 1, 1).unwrap().to_any(); /// let d2 = Date::try_new_persian(1562, 1, 1).unwrap().to_any(); diff --git a/deps/crates/vendor/icu_calendar-v2/src/ixdtf.rs b/deps/crates/vendor/icu_calendar-v2/src/ixdtf.rs index bd89d205a32a..ac90bccc7c5d 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/ixdtf.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/ixdtf.rs @@ -11,10 +11,10 @@ use crate::types::RataDie; use crate::{AsCalendar, Calendar, Date, Iso, RangeError}; use calendrical_calculations::gregorian::fixed_from_gregorian; use icu_locale_core::preferences::extensions::unicode::keywords::CalendarAlgorithm; +use ixdtf::ParseError as Rfc9557Error; use ixdtf::encoding::Utf8; use ixdtf::parsers::IxdtfParser; use ixdtf::records::IxdtfParseRecord; -use ixdtf::ParseError as Rfc9557Error; /// An error returned from parsing an RFC 9557 string to an `icu::calendar` type. #[derive(Debug, displaydoc::Display)] @@ -142,18 +142,17 @@ impl Date { ) -> Result { let date_record = ixdtf_record.date.ok_or(ParseError::MissingFields)?; - if let Some(ixdtf_calendar) = ixdtf_record.calendar { - if let Some(expected_calendar) = calendar { - if ixdtf_calendar != expected_calendar.as_str().as_bytes() { - return Err(ParseError::MismatchedCalendar( - expected_calendar, - icu_locale_core::extensions::unicode::Value::try_from_utf8(ixdtf_calendar) - .ok() - .and_then(|v| CalendarAlgorithm::try_from(&v).ok()) - .ok_or(ParseError::UnknownCalendar)?, - )); - } - } + if let Some(ixdtf_calendar) = ixdtf_record.calendar + && let Some(expected_calendar) = calendar + && ixdtf_calendar != expected_calendar.as_str().as_bytes() + { + return Err(ParseError::MismatchedCalendar( + expected_calendar, + icu_locale_core::extensions::unicode::Value::try_from_utf8(ixdtf_calendar) + .ok() + .and_then(|v| CalendarAlgorithm::try_from(&v).ok()) + .ok_or(ParseError::UnknownCalendar)?, + )); } // `date_record` is in `VALID_RD_RANGE` by `ixdtf` invariants diff --git a/deps/crates/vendor/icu_calendar-v2/src/jiff.rs b/deps/crates/vendor/icu_calendar-v2/src/jiff.rs index 5e1daff3e9f3..c06264b9efbf 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/jiff.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/jiff.rs @@ -2,11 +2,11 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use crate::Date; +use crate::Gregorian; use crate::cal::abstract_gregorian::AbstractGregorianYear; use crate::cal::gregorian::GregorianDateInner; use crate::calendar_arithmetic::ArithmeticDate; -use crate::Date; -use crate::Gregorian; impl From for Date { fn from(jiff: jiff::civil::Date) -> Self { diff --git a/deps/crates/vendor/icu_calendar-v2/src/lib.rs b/deps/crates/vendor/icu_calendar-v2/src/lib.rs index f3d31e885fa0..28cb21d0da9d 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/lib.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/lib.rs @@ -40,7 +40,7 @@ //! as well as the calendar type. //! //! ```rust -//! use icu::calendar::{types::Weekday, Date}; +//! use icu::calendar::{Date, types::Weekday}; //! //! // Creating ISO date: 1992-09-02. //! let mut date_iso = Date::try_new_iso(1992, 9, 2) @@ -59,8 +59,8 @@ //! Example of converting an ISO date across Indian and Buddhist calendars. //! //! ```rust -//! use icu::calendar::cal::{Buddhist, Indian}; //! use icu::calendar::Date; +//! use icu::calendar::cal::{Buddhist, Indian}; //! //! // Creating ISO date: 1992-09-02. //! let mut date_iso = Date::try_new_iso(1992, 9, 2) diff --git a/deps/crates/vendor/icu_calendar-v2/src/options.rs b/deps/crates/vendor/icu_calendar-v2/src/options.rs index dc0b515239db..68eb91c4361d 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/options.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/options.rs @@ -15,11 +15,11 @@ pub struct DateFromFieldsOptions { /// # Examples /// /// ``` + /// use icu::calendar::Date; + /// use icu::calendar::Iso; /// use icu::calendar::options::DateFromFieldsOptions; /// use icu::calendar::options::Overflow; /// use icu::calendar::types::DateFields; - /// use icu::calendar::Date; - /// use icu::calendar::Iso; /// /// // There is no day 31 in September. /// let mut fields = DateFields::default(); @@ -50,11 +50,11 @@ pub struct DateFromFieldsOptions { /// # Examples /// /// ``` + /// use icu::calendar::Date; + /// use icu::calendar::Iso; /// use icu::calendar::options::DateFromFieldsOptions; /// use icu::calendar::options::MissingFieldsStrategy; /// use icu::calendar::types::{DateFields, Month}; - /// use icu::calendar::Date; - /// use icu::calendar::Iso; /// /// // These options are missing a year. /// let mut fields = DateFields::default(); @@ -90,10 +90,10 @@ pub struct DateAddOptions { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::options::DateAddOptions; /// use icu::calendar::options::Overflow; /// use icu::calendar::types::DateDuration; - /// use icu::calendar::Date; /// /// // There is a day 31 in October but not in November. /// let d1 = Date::try_new_iso(2025, 10, 31).unwrap(); @@ -139,10 +139,10 @@ pub struct DateDifferenceOptions { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::options::DateDifferenceOptions; /// use icu::calendar::options::DateDurationUnit; /// use icu::calendar::types::DateDuration; - /// use icu::calendar::Date; /// /// let d1 = Date::try_new_iso(2025, 3, 31).unwrap(); /// let d2 = Date::try_new_iso(2026, 5, 15).unwrap(); @@ -221,12 +221,12 @@ pub enum Overflow { /// # Examples /// /// ``` + /// use icu::calendar::Date; + /// use icu::calendar::DateError; /// use icu::calendar::cal::Hebrew; /// use icu::calendar::options::DateFromFieldsOptions; /// use icu::calendar::options::Overflow; /// use icu::calendar::types::{DateFields, Month}; - /// use icu::calendar::Date; - /// use icu::calendar::DateError; /// /// let mut options = DateFromFieldsOptions::default(); /// options.overflow = Some(Overflow::Constrain); @@ -260,12 +260,12 @@ pub enum Overflow { /// # Examples /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Hebrew; /// use icu::calendar::error::DateFromFieldsError; /// use icu::calendar::options::DateFromFieldsOptions; /// use icu::calendar::options::Overflow; /// use icu::calendar::types::{DateFields, Month}; - /// use icu::calendar::Date; /// use tinystr::tinystr; /// /// let mut options = DateFromFieldsOptions::default(); @@ -371,9 +371,9 @@ pub enum DateDurationUnit { #[cfg(test)] mod tests { use crate::{ + Date, Gregorian, error::DateFromFieldsError, types::{DateFields, Month}, - Date, Gregorian, }; use itertools::Itertools; use std::collections::{BTreeMap, BTreeSet}; diff --git a/deps/crates/vendor/icu_calendar-v2/src/preferences.rs b/deps/crates/vendor/icu_calendar-v2/src/preferences.rs index 598fa2924634..2c39fb1eb4fc 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/preferences.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/preferences.rs @@ -47,6 +47,7 @@ impl CalendarPreferences { /// # Example /// /// ``` + /// # #![allow(deprecated)] /// use icu::calendar::preferences::{CalendarAlgorithm, CalendarPreferences, HijriCalendarAlgorithm}; /// use icu::locale::locale; /// @@ -68,8 +69,9 @@ impl CalendarPreferences { /// # CalendarAlgorithm::Gregory /// # ); /// ``` + #[deprecated(since = "2.3.0")] pub fn resolved_algorithm(self) -> CalendarAlgorithm { - use icu_locale_core::subtags::{region, Region}; + use icu_locale_core::subtags::{Region, region}; const AE: Region = region!("AE"); const BH: Region = region!("BH"); const KW: Region = region!("KW"); diff --git a/deps/crates/vendor/icu_calendar-v2/src/provider.rs b/deps/crates/vendor/icu_calendar-v2/src/provider.rs index 9637cd52dc01..7f4c532f1dbb 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/provider.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/provider.rs @@ -15,13 +15,16 @@ // Provider structs must be stable #![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)] +use core::fmt::Debug; use core::num::NonZeroU8; use crate::types::Weekday; +use icu_locale_core::preferences::extensions::unicode::keywords::{ + CalendarAlgorithm, HijriCalendarAlgorithm, +}; use icu_provider::fallback::{LocaleFallbackConfig, LocaleFallbackPriority}; use icu_provider::prelude::*; use tinystr::TinyAsciiStr; -use zerovec::ZeroVec; #[cfg(feature = "compiled_data")] #[derive(Debug)] @@ -40,10 +43,10 @@ const _: () = { use icu_calendar_data::*; pub mod icu { pub use crate as calendar; - pub use icu_locale as locale; } make_provider!(Baked); impl_calendar_japanese_modern_v1!(Baked); + impl_calendar_preferred_v1!(Baked); impl_calendar_week_v1!(Baked); }; @@ -51,7 +54,7 @@ icu_provider::data_marker!( /// Modern Japanese era names CalendarJapaneseModernV1, "calendar/japanese/modern/v1", - JapaneseEras<'static>, + JapaneseEras, is_singleton = true ); @@ -67,9 +70,196 @@ icu_provider::data_marker!( }, ); +/// Default calendar preferences for a region. +#[derive(Debug, Clone, Copy, PartialEq, Eq, yoke::Yokeable, zerofrom::ZeroFrom)] +#[cfg_attr(feature = "datagen", derive(databake::Bake))] +#[cfg_attr(feature = "datagen", databake(path = icu_calendar::provider))] +pub struct CalendarPreference { + /// The default calendar to use for this region. + pub default_algorithm: CalendarAlgorithm, + /// The default Hijri calendar to use for this region. + pub default_hijri_algorithm: HijriCalendarAlgorithm, +} + +#[cfg(any(feature = "serde", feature = "datagen"))] +#[derive(serde::Serialize, serde::Deserialize)] +struct CalendarPreferenceHuman<'a> { + #[serde(borrow)] + default_algorithm: &'a str, + #[serde(borrow)] + default_hijri_algorithm: &'a str, +} + +#[cfg(feature = "datagen")] +impl serde::Serialize for CalendarPreference { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + if serializer.is_human_readable() { + let human = CalendarPreferenceHuman { + default_algorithm: self.default_algorithm.as_str(), + default_hijri_algorithm: CalendarAlgorithm::Hijri(Some( + self.default_hijri_algorithm, + )) + .as_str(), + }; + return human.serialize(serializer); + } + + let default = match self.default_algorithm { + CalendarAlgorithm::Buddhist => 1u8, + CalendarAlgorithm::Chinese => 2, + CalendarAlgorithm::Coptic => 3, + CalendarAlgorithm::Dangi => 4, + CalendarAlgorithm::Ethioaa => 5, + CalendarAlgorithm::Ethiopic => 6, + CalendarAlgorithm::Gregory => 7, + CalendarAlgorithm::Hebrew => 8, + CalendarAlgorithm::Indian => 9, + CalendarAlgorithm::Hijri(Some(s)) if s == self.default_hijri_algorithm => 10, + CalendarAlgorithm::Iso8601 => 11, + CalendarAlgorithm::Japanese => 12, + CalendarAlgorithm::Persian => 13, + CalendarAlgorithm::Roc => 14, + _ => { + debug_assert!( + false, + "unknown calendar algorithm: {:?}", + self.default_algorithm + ); + 0 + } + }; + let hijri = match self.default_hijri_algorithm { + HijriCalendarAlgorithm::Umalqura => 1, + HijriCalendarAlgorithm::Tbla => 2, + HijriCalendarAlgorithm::Civil => 3, + HijriCalendarAlgorithm::Rgsa => 4, + _ => { + debug_assert!( + false, + "unknown hijri algorithm: {:?}", + self.default_hijri_algorithm + ); + 0 + } + }; + + (default << 3 | hijri).serialize(serializer) + } +} + +#[cfg(feature = "serde")] +impl<'de> serde::Deserialize<'de> for CalendarPreference { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if deserializer.is_human_readable() { + let human = CalendarPreferenceHuman::deserialize(deserializer)?; + let default_val = + icu_locale_core::extensions::unicode::Value::try_from_str(human.default_algorithm) + .map_err(serde::de::Error::custom)?; + let default_algorithm = + CalendarAlgorithm::try_from(&default_val).map_err(serde::de::Error::custom)?; + let hijri_val = icu_locale_core::extensions::unicode::Value::try_from_str( + human.default_hijri_algorithm, + ) + .map_err(serde::de::Error::custom)?; + let default_hijri_algorithm = match CalendarAlgorithm::try_from(&hijri_val) { + Ok(CalendarAlgorithm::Hijri(Some(h))) => h, + _ => return Err(serde::de::Error::custom("expected islamic-* calendar")), + }; + return Ok(Self { + default_algorithm, + default_hijri_algorithm, + }); + } + + let packed = u8::deserialize(deserializer)?; + let default_algorithm = packed >> 3; + let default_hijri_algorithm = packed & 0x07; + let default_hijri_algorithm = match default_hijri_algorithm { + 1 => HijriCalendarAlgorithm::Umalqura, + 2 => HijriCalendarAlgorithm::Tbla, + 3 => HijriCalendarAlgorithm::Civil, + 4 => HijriCalendarAlgorithm::Rgsa, + _ => { + debug_assert!( + false, + "unknown hijri algorithm discriminant: {default_hijri_algorithm}" + ); + HijriCalendarAlgorithm::Civil + } + }; + let default_algorithm = match default_algorithm { + 1 => CalendarAlgorithm::Buddhist, + 2 => CalendarAlgorithm::Chinese, + 3 => CalendarAlgorithm::Coptic, + 4 => CalendarAlgorithm::Dangi, + 5 => CalendarAlgorithm::Ethioaa, + 6 => CalendarAlgorithm::Ethiopic, + 7 => CalendarAlgorithm::Gregory, + 8 => CalendarAlgorithm::Hebrew, + 9 => CalendarAlgorithm::Indian, + 10 => CalendarAlgorithm::Hijri(Some(default_hijri_algorithm)), + 11 => CalendarAlgorithm::Iso8601, + 12 => CalendarAlgorithm::Japanese, + 13 => CalendarAlgorithm::Persian, + 14 => CalendarAlgorithm::Roc, + _ => { + debug_assert!( + false, + "unknown calendar algorithm discriminant: {default_algorithm}" + ); + CalendarAlgorithm::Gregory + } + }; + Ok(Self { + default_algorithm, + default_hijri_algorithm, + }) + } +} + +impl CalendarPreference { + /// Resolves a [`Option`] to a concrete algorithm against these preferences. + pub fn resolve(&self, unresolved: Option) -> CalendarAlgorithm { + match unresolved { + Some(CalendarAlgorithm::Hijri(None)) => { + CalendarAlgorithm::Hijri(Some(self.default_hijri_algorithm)) + } + Some(a) => a, + None => self.default_algorithm, + } + } +} + +icu_provider::data_marker!( + /// The preferred calendar algorithm for a region. + CalendarPreferredV1, + "calendar/preferred/v1", + CalendarPreference, + fallback_config = { + let mut config = LocaleFallbackConfig::default(); + config.priority = LocaleFallbackPriority::Region; + config + }, +); + +icu_provider::data_struct!( + CalendarPreference, + #[cfg(feature = "datagen")] +); + #[cfg(feature = "datagen")] /// The latest minimum set of markers required by this component. -pub const MARKERS: &[DataMarkerInfo] = &[CalendarJapaneseModernV1::INFO, CalendarWeekV1::INFO]; +pub const MARKERS: &[DataMarkerInfo] = &[ + CalendarJapaneseModernV1::INFO, + CalendarWeekV1::INFO, + CalendarPreferredV1::INFO, +]; /// The date at which an era started /// @@ -105,58 +295,236 @@ pub struct EraStartDate { /// including in SemVer minor releases. While the serde representation of data structs is guaranteed /// to be stable, their Rust representation might not be. Use with caution. /// -#[derive(Debug, PartialEq, Clone, Default, yoke::Yokeable, zerofrom::ZeroFrom)] -#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))] -#[cfg_attr(feature = "datagen", databake(path = icu_calendar::provider))] -#[cfg_attr(feature = "serde", derive(serde::Deserialize))] -pub struct JapaneseEras<'data> { - /// A map from era start dates to their era codes - #[cfg_attr(feature = "serde", serde(borrow))] - pub dates_to_eras: ZeroVec<'data, (EraStartDate, TinyAsciiStr<16>)>, -} +#[derive(Debug, PartialEq, Clone, Copy, Default, yoke::Yokeable, zerofrom::ZeroFrom)] +pub struct JapaneseEras(Option); icu_provider::data_struct!( - JapaneseEras<'_>, + JapaneseEras, #[cfg(feature = "datagen")] ); -impl JapaneseEras<'_> { - pub(crate) const fn last_after_reiwa(&self) -> Option { - let Some(&zerovec::ule::tuple::Tuple2ULE(start, code)) = - self.dates_to_eras.as_slice().as_ule_slice().last() - else { +impl JapaneseEras { + /// Creates a new [`JapaneseEras`] without a post-Reiwa era. + pub const fn up_to_reiwa() -> Self { + Self(None) + } + + /// Creates a new [`JapaneseEras`] with the last post-Reiwa era's start date, code, and index. + pub const fn with_last_era( + start: EraStartDate, + code: TinyAsciiStr<8>, + index: u8, + ) -> Option { + if start.year < 2026 { + return Some(Self::up_to_reiwa()); + } + let Some(packed) = PackedEra::pack(start, code, index) else { return None; }; - if start.year.as_signed_int() < 2026 { - return None; + Some(Self(Some(packed))) + } + + /// Returns all post-Meji eras, in chronological order. + pub fn eras(self) -> impl DoubleEndedIterator, u8)> { + use tinystr::tinystr; + [ + ( + EraStartDate { + year: 1868, + month: 10, + day: 23, + }, + tinystr!(8, "meiji"), + 2, + ), + ( + EraStartDate { + year: 1912, + month: 7, + day: 30, + }, + tinystr!(8, "taisho"), + 3, + ), + ( + EraStartDate { + year: 1926, + month: 12, + day: 25, + }, + tinystr!(8, "showa"), + 4, + ), + ( + EraStartDate { + year: 1989, + month: 1, + day: 8, + }, + tinystr!(8, "heisei"), + 5, + ), + ( + EraStartDate { + year: 2019, + month: 5, + day: 1, + }, + tinystr!(8, "reiwa"), + 6, + ), + ] + .into_iter() + .chain(self.0.map(PackedEra::unpack)) + } +} + +#[cfg(feature = "datagen")] +impl databake::Bake for JapaneseEras { + fn bake(&self, ctx: &databake::CrateEnv) -> databake::TokenStream { + ctx.insert("icu_calendar"); + if let Some((era_start_date, code, idx)) = self.eras().last() + && code != "reiwa" + { + let era_start_date = era_start_date.bake(ctx); + let code = code.bake(ctx); + let idx = idx.bake(ctx); + databake::quote! { + icu_calendar::provider::JapaneseEras::with_last_era(#era_start_date, #code, #idx).unwrap() + } + } else { + databake::quote! { + icu_calendar::provider::JapaneseEras::up_to_reiwa() + } } - Some(PackedEra::pack( - EraStartDate { - year: start.year.as_signed_int(), - month: start.month, - day: start.day, - }, + } +} + +#[cfg(feature = "datagen")] +impl databake::BakeSize for JapaneseEras { + fn borrows_size(&self) -> usize { + 0 + } +} + +#[cfg(feature = "datagen")] +impl serde::Serialize for JapaneseEras { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + use zerovec::ZeroVec; + + #[derive(serde::Serialize)] + struct Raw<'data> { + pub dates_to_eras: ZeroVec<'data, (EraStartDate, TinyAsciiStr<16>)>, + } + + let mut dates_to_eras = self + .eras() + .map(|(start, code, _)| (start, code.resize())) + .collect::>(); + + while let Some((start, code, index)) = self.eras().last() + && dates_to_eras.len() + 2 <= index as usize + { + use zerovec::ule::AsULE; + + dates_to_eras.with_mut(|v| v.push((start, code.resize()).to_unaligned())); + } + + Raw { dates_to_eras }.serialize(serializer) + } +} + +#[cfg(feature = "serde")] +impl<'de> serde::Deserialize<'de> for JapaneseEras { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + use serde::de::Error; + use zerovec::ZeroVec; + + #[derive(serde::Deserialize)] + struct Raw<'data> { + #[serde(borrow)] + pub dates_to_eras: ZeroVec<'data, (EraStartDate, TinyAsciiStr<16>)>, + } + + let Raw { dates_to_eras } = Raw::deserialize(deserializer)?; + + let Some((start, code)) = dates_to_eras.last() else { + return Err(D::Error::custom("At least one era is required")); + }; + + if Self::up_to_reiwa() + .eras() + .map(|(start, code, ..)| (start, code.resize())) + .ne(dates_to_eras + .iter() + .take(Self::up_to_reiwa().eras().count())) + { + return Err(D::Error::custom( + "Invalid era data: Meiji through Reiwa must be present and in order", + )); + } + + Self::with_last_era( + start, code.resize(), - self.dates_to_eras.as_slice().len() as u8 + 1, - )) + dates_to_eras.as_slice().len() as u8 + 1, + ) + .ok_or_else(|| D::Error::custom("Invalid era")) } } /// A type to represent a modern (post 2026, 8-byte code) era. -#[derive(Debug, PartialEq, Copy, Clone, yoke::Yokeable, zerofrom::ZeroFrom)] -pub(crate) struct PackedEra(NonZeroU8 /* give a niche */, [u8; 6]); +/// +///
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways, +/// including in SemVer minor releases. While the serde representation of data structs is guaranteed +/// to be stable, their Rust representation might not be. Use with caution. +///
+#[derive(PartialEq, Copy, Clone, yoke::Yokeable, zerofrom::ZeroFrom)] +struct PackedEra(NonZeroU8 /* give a niche */, [u8; 6]); + +impl Debug for PackedEra { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let (start, code, index) = self.unpack(); + f.debug_struct("PackedEra") + .field("start", &start) + .field("code", &code) + .field("index", &index) + .field("", &(self.0, self.1)) + .finish() + } +} impl PackedEra { /// Construct a `PackedEra` from a tuple /// This supports start dates until 2086-12-31, indices 7 and 8, and lower ASCII alphabetic codes - pub const fn pack(start: EraStartDate, code: TinyAsciiStr<8>, index: u8) -> Self { - debug_assert!(start.day < 1 << 5); // 5 bits - debug_assert!(start.month < 1 << 4); // 4 bits - debug_assert!(2026 <= start.year && start.year < 2026 + (1 << 6)); // 6 bits - - debug_assert!(7 <= index && index < 7 + (1 << 1)); // 1 bit - - debug_assert!(code.is_ascii_alphabetic_lowercase()); // 40 bits + const fn pack(start: EraStartDate, code: TinyAsciiStr<8>, index: u8) -> Option { + // 5 bits + if !(0 < start.day && start.day < 1 << 5) { + return None; + } + // 4 bits + if !(0 < start.month && start.month < 1 << 4) { + return None; + } + // 6 bits + if !(2026 <= start.year && start.year < 2026 + (1 << 6)) { + return None; + } + // 1 bit + if !(7 <= index && index < 7 + (1 << 1)) { + return None; + } + // 40 bits + if !code.is_ascii_alphabetic_lowercase() { + return None; + } let mut packed = 0; @@ -177,14 +545,15 @@ impl PackedEra { let [a, b, c, d, e, f, g, z] = packed.to_le_bytes(); debug_assert!(z == 0); - // the lowest byte contains month and day, so it's non-zero - debug_assert!(a > 0); - Self(unsafe { NonZeroU8::new_unchecked(a) }, [b, c, d, e, f, g]) + let Some(a) = NonZeroU8::new(a) else { + return None; + }; + Some(Self(a, [b, c, d, e, f, g])) } /// Convert a `PackedEra` into a tuple of start date, code, and /// [`era_index`](crate::types::EraYear::era_index) - pub const fn unpack(self) -> (EraStartDate, TinyAsciiStr<8>, u8) { + const fn unpack(self) -> (EraStartDate, TinyAsciiStr<8>, u8) { let Self(a, [b, c, d, e, f, g]) = self; let mut packed = u64::from_le_bytes([a.get(), b, c, d, e, f, g, 0]); @@ -226,7 +595,7 @@ impl PackedEra { } #[test] -fn packed_era_size() { +fn japanese_eras_size() { assert_eq!(size_of::(), 7); assert_eq!(size_of::>(), 7); assert_eq!(size_of::(), 7); @@ -234,7 +603,7 @@ fn packed_era_size() { } #[test] -fn packed_era_roundtrip() { +fn japanese_eras_packing() { let start = EraStartDate { year: 2086, month: 11, @@ -242,10 +611,70 @@ fn packed_era_roundtrip() { }; let code = tinystr::tinystr!(8, "fuzu"); let index = 8; + assert_eq!( - PackedEra::pack(start, code, index).unpack(), + JapaneseEras::with_last_era(start, code, index) + .unwrap() + .eras() + .last() + .unwrap(), (start, code, index) ); + assert_ne!( + JapaneseEras::up_to_reiwa().eras().last().unwrap(), + (start, code, index) + ); +} + +#[test] +fn japanese_eras_serde_roundtrip() { + let eras = JapaneseEras::with_last_era( + EraStartDate { + year: 2086, + month: 11, + day: 1, + }, + tinystr::tinystr!(8, "fuzu"), + 8, + ) + .unwrap(); + + assert_eq!( + serde_json::from_str::(&serde_json::to_string(&eras).unwrap()).unwrap(), + eras + ); + + let eras = JapaneseEras::up_to_reiwa(); + + assert_eq!( + serde_json::from_str::(&serde_json::to_string(&eras).unwrap()).unwrap(), + eras + ); +} + +#[test] +fn japanese_eras_bake() { + databake::test_bake!( + JapaneseEras, + const, + crate::provider::JapaneseEras::with_last_era( + crate::provider::EraStartDate { + year: 2086i32, + month: 11u8, + day: 1u8, + }, + tinystr::tinystr!(8usize, "fuzu"), + 8u8 + ) + .unwrap(), + icu_calendar + ); + databake::test_bake!( + JapaneseEras, + const, + crate::provider::JapaneseEras::up_to_reiwa(), + icu_calendar + ); } /// An ICU4X mapping to a subset of CLDR weekData. diff --git a/deps/crates/vendor/icu_calendar-v2/src/tests/constructor_roundtrip.rs b/deps/crates/vendor/icu_calendar-v2/src/tests/constructor_roundtrip.rs new file mode 100644 index 000000000000..0ec3887fa3cf --- /dev/null +++ b/deps/crates/vendor/icu_calendar-v2/src/tests/constructor_roundtrip.rs @@ -0,0 +1,221 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +use crate::Calendar; +use crate::Date; +use crate::error::DateFromFieldsError; +use crate::options::{DateFromFieldsOptions, Overflow}; +use crate::types::DateFields; +use calendrical_calculations::rata_die::RataDie; + +// We could use the `bitflags` crate here, but we are using raw constants +// to avoid pulling in an extra dependency. +type Flags = u32; +const EXTENDED_YEAR: u32 = 1 << 0; +const ERA: u32 = 1 << 1; +const ERA_YEAR: u32 = 1 << 2; +const MONTH: u32 = 1 << 3; +const MONTH_CODE: u32 = 1 << 4; +const ORDINAL_MONTH: u32 = 1 << 5; +const DAY: u32 = 1 << 6; +const MAKE_INCONSISTENT_YEAR: u32 = 1 << 7; +const MAKE_INCONSISTENT_MONTH: u32 = 1 << 8; + +fn try_from_fields_helper( + flags: Flags, + rd: RataDie, + options: DateFromFieldsOptions, + cal: C, +) -> Result, DateFromFieldsError> { + let date = Date::from_rata_die(rd, cal); + let mut fields = DateFields::default(); + + if flags & EXTENDED_YEAR != 0 { + fields.extended_year = Some(date.year().extended_year()); + } + + let era_bytes = date.year().era().map(|ey| ey.era); + if flags & ERA != 0 + && let Some(ref eb) = era_bytes + { + fields.era = Some(eb.as_bytes()); + } + if flags & ERA_YEAR != 0 + && let Some(ey) = date.year().era() + { + fields.era_year = Some(ey.year); + } + + let month_input = date.month().to_input(); + if flags & MONTH != 0 { + fields.month = Some(month_input); + } + + let month_code_holder = month_input.code(); + if flags & MONTH_CODE != 0 { + fields.month_code = Some(month_code_holder.0.as_bytes()); + } + if flags & ORDINAL_MONTH != 0 { + fields.ordinal_month = Some(date.month().ordinal); + } + if flags & DAY != 0 { + fields.day = Some(date.day_of_month().0); + } + + if flags & MAKE_INCONSISTENT_YEAR != 0 + && let Some(ref mut y) = fields.extended_year + { + *y += 1; + } + + if flags & MAKE_INCONSISTENT_MONTH != 0 + && let Some(ref mut m) = fields.ordinal_month + { + *m = if *m == 1 { 2 } else { 1 }; + } + + Date::try_from_fields(fields, options, cal) +} + +super::test_all_cals!( + fn check_constructor_roundtrip(cal: C) { + let rds = crate::tests::get_interesting_rds(); + + for rd in rds { + let date = Date::from_rata_die(rd, cal); + + for overflow in [Overflow::Reject, Overflow::Constrain] { + let options = DateFromFieldsOptions { + overflow: Some(overflow), + ..Default::default() + }; + + // Test 1: extended_year + month + day + let result = try_from_fields_helper(EXTENDED_YEAR | MONTH | DAY, rd, options, cal); + assert_eq!( + result.unwrap().to_rata_die(), + rd, + "Failed roundtrip for extended_year + month + day at RD {:?}", + rd + ); + + // Test 2: extended_year + month_code + day + let result = + try_from_fields_helper(EXTENDED_YEAR | MONTH_CODE | DAY, rd, options, cal); + assert_eq!( + result.unwrap().to_rata_die(), + rd, + "Failed roundtrip for extended_year + month_code + day at RD {:?}", + rd + ); + + // Test 3: extended_year + ordinal_month + day + let result = + try_from_fields_helper(EXTENDED_YEAR | ORDINAL_MONTH | DAY, rd, options, cal); + assert_eq!( + result.unwrap().to_rata_die(), + rd, + "Failed roundtrip for extended_year + ordinal_month + day at RD {:?}", + rd + ); + + // Test 4: era + era_year + month + day (if era exists) + if date.year().era().is_some() { + let result = + try_from_fields_helper(ERA | ERA_YEAR | MONTH | DAY, rd, options, cal); + assert_eq!( + result.unwrap().to_rata_die(), + rd, + "Failed roundtrip for era + era_year + month + day at RD {:?}", + rd + ); + } + + // Test 5: Both extended_year and era+era_year + if date.year().era().is_some() { + let result = try_from_fields_helper( + EXTENDED_YEAR | ERA | ERA_YEAR | MONTH | DAY, + rd, + options, + cal, + ); + assert_eq!( + result.unwrap().to_rata_die(), + rd, + "Failed roundtrip for both year fields at RD {:?}", + rd + ); + } + + // Test 6: Date::try_new + let extended_year = date.year().extended_year(); + let month = date.month().to_input(); + let day = date.day_of_month().0; + let reconstructed = Date::try_new(extended_year.into(), month, day, cal).unwrap(); + assert_eq!( + reconstructed.to_rata_die(), + rd, + "Failed roundtrip for Date::try_new at RD {:?}", + rd + ); + + // Negative Test 1: Inconsistent year + if date.year().era().is_some() { + let result = try_from_fields_helper( + EXTENDED_YEAR | ERA | ERA_YEAR | MONTH | DAY | MAKE_INCONSISTENT_YEAR, + rd, + options, + cal, + ); + assert_eq!( + result.map(|d| d.to_rata_die()), + Err(DateFromFieldsError::InconsistentYear), + "Expected InconsistentYear for RD {:?}", + rd + ); + } + + // Negative Test 2: Inconsistent month + if date.months_in_year() >= 2 { + let result = try_from_fields_helper( + EXTENDED_YEAR | MONTH | ORDINAL_MONTH | DAY | MAKE_INCONSISTENT_MONTH, + rd, + options, + cal, + ); + assert_eq!( + result.map(|d| d.to_rata_die()), + Err(DateFromFieldsError::InconsistentMonth), + "Expected InconsistentMonth for RD {:?}", + rd + ); + } + + // Test insufficient fields: Missing Day + { + let result = try_from_fields_helper(EXTENDED_YEAR | MONTH, rd, options, cal); + assert!( + result.is_err(), + "Expected error for missing day at RD {:?}", + rd + ); + } + + // Test insufficient fields: Missing Year + { + let result = try_from_fields_helper(MONTH | DAY, rd, options, cal); + assert!( + result.is_err(), + "Expected error for missing year at RD {:?}", + rd + ); + } + } + } + } +); + +// Note: Specific calendar constructors (like Date::try_new_iso, Date::try_new_gregorian, etc.) +// are tested individually in their respective files under src/cal/ to ensure correct coverage +// of their diverse signatures. diff --git a/deps/crates/vendor/icu_calendar-v2/src/tests/date_arithmetic_snapshot.rs b/deps/crates/vendor/icu_calendar-v2/src/tests/date_arithmetic_snapshot.rs index 5cbbba1acbb8..518f0793b35a 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/tests/date_arithmetic_snapshot.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/tests/date_arithmetic_snapshot.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use crate::Date; use crate::options::{DateAddOptions, DateDifferenceOptions, DateDurationUnit}; use crate::types::{DateDuration, RataDie}; -use crate::Date; use insta::assert_snapshot; use std::fmt::Write; diff --git a/deps/crates/vendor/icu_calendar-v2/src/tests/extended_year.rs b/deps/crates/vendor/icu_calendar-v2/src/tests/extended_year.rs index 91e52a232fb1..5dce6ffd061b 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/tests/extended_year.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/tests/extended_year.rs @@ -2,10 +2,10 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::preferences::CalendarAlgorithm; -use crate::types::Month; use crate::Calendar; use crate::Date; +use crate::preferences::CalendarAlgorithm; +use crate::types::Month; /// Reference: fn extended_epoch(c: &C) -> Option { diff --git a/deps/crates/vendor/icu_calendar-v2/src/tests/extrema.rs b/deps/crates/vendor/icu_calendar-v2/src/tests/extrema.rs index 1cf2f9fa9087..0ecd41bd049e 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/tests/extrema.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/tests/extrema.rs @@ -2,6 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use crate::Date; use crate::calendar_arithmetic::{CONSTRUCTOR_YEAR_RANGE, GENEROUS_YEAR_RANGE, VALID_RD_RANGE}; use crate::duration::DateDuration; use crate::error::DateAddError; @@ -10,7 +11,6 @@ use crate::options::{ DateAddOptions, DateDifferenceOptions, DateDurationUnit, DateFromFieldsOptions, Overflow, }; use crate::types::{DateFields, Month, YearInput}; -use crate::Date; use calendrical_calculations::gregorian::fixed_from_gregorian; use calendrical_calculations::rata_die::RataDie; @@ -139,7 +139,11 @@ super::test_all_cals!( for overflow in [CONSTRAIN, REJECT] { let added = start_date.try_added_with_options(duration_bound, overflow); if added.is_err() && overflow == REJECT { - assert_ne!(added, Err(DateAddError::Overflow), "{start_date:?} + {duration_bound:?} should not produce overflow error in Reject mode"); + assert_ne!( + added, + Err(DateAddError::Overflow), + "{start_date:?} + {duration_bound:?} should not produce overflow error in Reject mode" + ); } else { assert_eq!( added, @@ -186,8 +190,11 @@ super::test_all_cals!( for generous_duration in [generous_max_duration, generous_max_neg_duration] { for overflow in [CONSTRAIN, REJECT] { - assert_eq!(start_date.try_added_with_options(generous_duration, overflow), Err(DateAddError::Overflow), - "Adding durations from the generously-large range should always fail (but never panic)"); + assert_eq!( + start_date.try_added_with_options(generous_duration, overflow), + Err(DateAddError::Overflow), + "Adding durations from the generously-large range should always fail (but never panic)" + ); } } } diff --git a/deps/crates/vendor/icu_calendar-v2/src/tests/mod.rs b/deps/crates/vendor/icu_calendar-v2/src/tests/mod.rs index a217fc7a2a84..337c754bd456 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/tests/mod.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/tests/mod.rs @@ -3,6 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). mod arithmetic; +mod constructor_roundtrip; mod continuity_test; mod date_arithmetic_snapshot; mod exhaustive; @@ -11,6 +12,10 @@ mod extrema; mod month; mod not_enough_fields; +use crate::Date; +use crate::types::Month; +use calendrical_calculations::rata_die::RataDie; + macro_rules! test_all_cals { ($(#[$meta:meta])* fn $name:ident($cal:ident: C) $tt:tt) => { mod $name { @@ -127,3 +132,61 @@ macro_rules! test_all_cals { }; } use test_all_cals; + +pub(crate) fn get_interesting_rds() -> Vec { + let mut rds = Vec::new(); + + // Iso / Gregorian leap day + let date = Date::try_new_iso(2020, 2, 29).expect("2020-02-29 is a valid ISO date"); + rds.push(date.to_rata_die()); + + // Hebrew leap month (Adar I) in leap year 5784 + let date = Date::try_new_hebrew_v2(5784, Month::leap(5), 15).expect("Valid Hebrew date"); + rds.push(date.to_rata_die()); + + // Hebrew Adar II in leap year 5784 + let date = Date::try_new_hebrew_v2(5784, Month::new(6), 15).expect("Valid Hebrew date"); + rds.push(date.to_rata_die()); + + // Hebrew non-Adar month in leap year 5784 + let date = Date::try_new_hebrew_v2(5784, Month::new(1), 15).expect("Valid Hebrew date"); + rds.push(date.to_rata_die()); + + // Chinese leap month date + let date = + Date::try_new_chinese_traditional(2023, Month::leap(2), 1).expect("Valid Chinese date"); + rds.push(date.to_rata_die()); + + // Chinese leap year 2023, non-leap month + let date = + Date::try_new_chinese_traditional(2023, Month::new(1), 1).expect("Valid Chinese date"); + rds.push(date.to_rata_die()); + + // Japanese era transition + let date = Date::try_new_japanese_with_calendar("reiwa", 1, 5, 1, crate::cal::Japanese::new()) + .expect("Valid Japanese date"); + rds.push(date.to_rata_die()); + + // Ethiopic month 13 + let date = Date::try_new_ethiopian(crate::cal::EthiopianEraStyle::AmeteMihret, 2015, 13, 5) + .expect("Valid Ethiopian date"); + rds.push(date.to_rata_die()); + + // Coptic month 13 + let date = Date::try_new_coptic(1686, 13, 5).expect("Valid Coptic date"); + rds.push(date.to_rata_die()); + + // Add some more general dates + rds.push(RataDie::new(0)); + rds.push(RataDie::new(1)); + rds.push(RataDie::new(-1)); + rds.push(RataDie::new(730000)); // ~2000 CE + rds.push(RataDie::new(100)); + rds.push(RataDie::new(-100)); + rds.push(RataDie::new(1000000)); // ~2739 CE + rds.push(RataDie::new(-1000000)); // ~ -2739 CE + rds.push(RataDie::new(123456)); + rds.push(RataDie::new(-123456)); + + rds +} diff --git a/deps/crates/vendor/icu_calendar-v2/src/tests/month.rs b/deps/crates/vendor/icu_calendar-v2/src/tests/month.rs index 841e7c2e071c..315d260f7d2e 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/tests/month.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/tests/month.rs @@ -4,11 +4,11 @@ #![allow(clippy::field_reassign_with_default)] // use public API +use crate::Date; use crate::error::{DateFromFieldsError, MonthCodeParseError}; use crate::options::{DateFromFieldsOptions, MissingFieldsStrategy, Overflow}; use crate::preferences::CalendarAlgorithm; use crate::types::{DateFields, Month, MonthCode}; -use crate::Date; static INVALID_SYNTAX: &[&str] = &[ "M", "M0", "M1", "01L", "L01", "M001", "M110", "MxxL", "m01", "M02l", diff --git a/deps/crates/vendor/icu_calendar-v2/src/tests/not_enough_fields.rs b/deps/crates/vendor/icu_calendar-v2/src/tests/not_enough_fields.rs index d14a52f77209..f87dc89447d8 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/tests/not_enough_fields.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/tests/not_enough_fields.rs @@ -2,10 +2,10 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use crate::Date; use crate::error::DateFromFieldsError; use crate::options::{DateFromFieldsOptions, MissingFieldsStrategy, Overflow}; use crate::types::DateFields; -use crate::Date; #[test] fn test_from_fields_not_enough_fields() { diff --git a/deps/crates/vendor/icu_calendar-v2/src/third_party.rs b/deps/crates/vendor/icu_calendar-v2/src/third_party.rs index 6ef83065d1eb..29b4f10b1e38 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/third_party.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/third_party.rs @@ -67,7 +67,8 @@ //! use icu::calendar::{Date, Gregorian, types::Weekday}; //! //! // Convert a time::Date into an ICU4X Date -//! let time_date = time::Date::from_calendar_date(2025, time::Month::January, 15).unwrap(); +//! let time_date = +//! time::Date::from_calendar_date(2025, time::Month::January, 15).unwrap(); //! let icu_date = Date::::from(time_date); //! assert_eq!(icu_date.era_year().year, 2025); //! diff --git a/deps/crates/vendor/icu_calendar-v2/src/time_crate.rs b/deps/crates/vendor/icu_calendar-v2/src/time_crate.rs index 829e45a625bf..b4e9769e8729 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/time_crate.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/time_crate.rs @@ -2,11 +2,11 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use crate::Date; +use crate::Gregorian; use crate::cal::abstract_gregorian::AbstractGregorianYear; use crate::cal::gregorian::GregorianDateInner; use crate::calendar_arithmetic::ArithmeticDate; -use crate::Date; -use crate::Gregorian; impl From for Date { fn from(other: time::Date) -> Self { diff --git a/deps/crates/vendor/icu_calendar-v2/src/types.rs b/deps/crates/vendor/icu_calendar-v2/src/types.rs index 48a0028df3de..14f7acae3145 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/types.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/types.rs @@ -73,9 +73,9 @@ pub struct DateFields<'a> { /// Either `extended_year` or `era` + `era_year` can be used in `DateFields`: /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::Japanese; /// use icu::calendar::types::DateFields; - /// use icu::calendar::Date; /// /// let mut fields1 = DateFields::default(); /// fields1.era = Some(b"reiwa"); @@ -151,9 +151,9 @@ pub struct DateFields<'a> { /// might not resolve to the same month number: /// /// ``` + /// use icu::calendar::Date; /// use icu::calendar::cal::ChineseTraditional; /// use icu::calendar::types::{DateFields, Month}; - /// use icu::calendar::Date; /// /// // The 2023 Year of the Rabbit had a leap month after the 2nd month. /// let mut fields1 = DateFields::default(); @@ -215,7 +215,7 @@ impl fmt::Debug for DateFields<'_> { day, } = *self; let mut builder = f.debug_struct("DateFields"); - if let Some(s) = era.and_then(|s| core::str::from_utf8(s).ok()) { + if let Some(s) = era.and_then(|s| str::from_utf8(s).ok()) { builder.field("era", &Some(s)); } else { builder.field("era", &era); @@ -223,7 +223,7 @@ impl fmt::Debug for DateFields<'_> { builder.field("era_year", &era_year); builder.field("extended_year", &extended_year); builder.field("month", &month); - if let Some(s) = month_code.and_then(|s| core::str::from_utf8(s).ok()) { + if let Some(s) = month_code.and_then(|s| str::from_utf8(s).ok()) { builder.field("month_code", &Some(s)); } else { builder.field("month_code", &month_code); diff --git a/deps/crates/vendor/icu_calendar-v2/src/week.rs b/deps/crates/vendor/icu_calendar-v2/src/week.rs index fae1913e63cc..ff58200c2dfe 100644 --- a/deps/crates/vendor/icu_calendar-v2/src/week.rs +++ b/deps/crates/vendor/icu_calendar-v2/src/week.rs @@ -20,7 +20,7 @@ const MIN_UNIT_DAYS: u16 = 14; /// ``` /// use icu::calendar::types::Weekday; /// use icu::calendar::week::WeekInformation; -/// use icu::locale::{locale, Locale}; +/// use icu::locale::{Locale, locale}; /// /// // For en-US /// let info = WeekInformation::try_new(locale!("en-US").into()).unwrap(); @@ -316,7 +316,7 @@ impl Iterator for WeekdaySetIterator { #[cfg(test)] mod tests { use super::*; - use crate::{types::DateDuration, types::Weekday, Date, RangeError}; + use crate::{Date, RangeError, types::DateDuration, types::Weekday}; static ISO_CALENDAR: WeekCalculator = WeekCalculator { first_weekday: Weekday::Monday, @@ -657,8 +657,8 @@ fn test_weekdays_iter() { #[test] fn test_iso_weeks() { - use crate::types::IsoWeekOfYear; use crate::Date; + use crate::types::IsoWeekOfYear; #[expect(clippy::zero_prefixed_literal)] for ((y, m, d), (iso_year, week_number)) in [ diff --git a/deps/crates/vendor/icu_calendar-v2/tests/arithmetic.rs b/deps/crates/vendor/icu_calendar-v2/tests/arithmetic.rs index bc275d08a8e1..227e4561e443 100644 --- a/deps/crates/vendor/icu_calendar-v2/tests/arithmetic.rs +++ b/deps/crates/vendor/icu_calendar-v2/tests/arithmetic.rs @@ -5,10 +5,10 @@ use std::convert::Infallible; use icu_calendar::{ + AsCalendar, Calendar, Date, Iso, cal::Hebrew, options::{DateAddOptions, DateDifferenceOptions, DateDurationUnit, Overflow}, types::{DateDuration, Month}, - AsCalendar, Calendar, Date, Iso, }; #[rustfmt::skip] diff --git a/deps/crates/vendor/icu_calendar-v2/tests/reference_year.rs b/deps/crates/vendor/icu_calendar-v2/tests/reference_year.rs index bb1b6b2445b5..60d137e8ff61 100644 --- a/deps/crates/vendor/icu_calendar-v2/tests/reference_year.rs +++ b/deps/crates/vendor/icu_calendar-v2/tests/reference_year.rs @@ -5,11 +5,11 @@ use std::{collections::HashSet, fmt::Debug}; use icu_calendar::{ + Calendar, Date, cal::*, error::DateFromFieldsError, options::{DateFromFieldsOptions, MissingFieldsStrategy, Overflow}, types::{DateFields, Month}, - Calendar, Date, }; /// Test that a given calendar produces valid monthdays @@ -133,13 +133,13 @@ where if let Ok(reject_result) = reject_result { // We didn't need to constrain here, update the last valid date last_valid_date = Some(reject_result); - } else if let Some(last_valid_date) = last_valid_date { - if md_validity != ValidityState::ChineseConstrain { - assert_eq!( - last_valid_date, reference_date, - "Constrain should constrain to the last valid date in the month" - ); - } + } else if let Some(last_valid_date) = last_valid_date + && md_validity != ValidityState::ChineseConstrain + { + assert_eq!( + last_valid_date, reference_date, + "Constrain should constrain to the last valid date in the month" + ); } // Test that ordinal months cause it to fail (even if the month code is still set) @@ -239,7 +239,7 @@ fn hijri_tabular_md_condition(month_number: u8, is_leap: bool, day_number: u8) - } // Odd months have 30 days, even months have 29, except for M12 in a leap year - ValidityState::from(if month_number % 2 == 0 { + ValidityState::from(if month_number.is_multiple_of(2) { if month_number == 12 { day_number <= 30 } else { diff --git a/deps/crates/vendor/icu_calendar-v2/tests/reingold.rs b/deps/crates/vendor/icu_calendar-v2/tests/reingold.rs index 0a1f2536f65b..960fd661e7c4 100644 --- a/deps/crates/vendor/icu_calendar-v2/tests/reingold.rs +++ b/deps/crates/vendor/icu_calendar-v2/tests/reingold.rs @@ -2,11 +2,11 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use icu_calendar::Date; +use icu_calendar::cal::Hijri; use icu_calendar::cal::hijri::{ HijriYear, Rules, TabularAlgorithm, TabularAlgorithmEpoch, TabularAlgorithmLeapYears, }; -use icu_calendar::cal::Hijri; -use icu_calendar::Date; /// [`Hijri`] [`Rules`] based on an astronomical simulation for Mecca. /// diff --git a/deps/crates/vendor/icu_calendar_data-v2/.cargo_vcs_info.json b/deps/crates/vendor/icu_calendar_data-v2/.cargo_vcs_info.json index 050558e7ea49..16f10b9a4fa3 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/.cargo_vcs_info.json +++ b/deps/crates/vendor/icu_calendar_data-v2/.cargo_vcs_info.json @@ -1,6 +1,6 @@ { "git": { - "sha1": "c9fac4e625ccb2c6a7aa35079fff9709db4385ac" + "sha1": "031d9e89f6a3fd26a14491e090729d46094328fd" }, "path_in_vcs": "provider/data/calendar" } \ No newline at end of file diff --git a/deps/crates/vendor/icu_calendar_data-v2/Cargo.lock b/deps/crates/vendor/icu_calendar_data-v2/Cargo.lock index e0df6897dd08..6b993fa9e7f0 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/Cargo.lock +++ b/deps/crates/vendor/icu_calendar_data-v2/Cargo.lock @@ -4,4 +4,4 @@ version = 3 [[package]] name = "icu_calendar_data" -version = "2.2.0" +version = "2.4.0" diff --git a/deps/crates/vendor/icu_calendar_data-v2/Cargo.toml b/deps/crates/vendor/icu_calendar_data-v2/Cargo.toml index 64c7f7cd370e..93e5563cd7f9 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/Cargo.toml +++ b/deps/crates/vendor/icu_calendar_data-v2/Cargo.toml @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2021" -rust-version = "1.86" +edition = "2024" +rust-version = "1.88" name = "icu_calendar_data" -version = "2.2.0" +version = "2.4.0" authors = ["The ICU4X Project Developers"] build = "build.rs" include = [ @@ -47,12 +47,13 @@ categories = [ ] license = "Unicode-3.0" repository = "https://github.com/unicode-org/icu4x" +resolver = "2" [package.metadata.sources.cldr] -tagged = "48.2.0" +tagged = "49.0.0" -[package.metadata.sources.icuexport] -tagged = "release-78.1rc" +[package.metadata.sources.unicode] +tagged = "18.0.0" [package.metadata.sources.segmenter_lstm] tagged = "v0.1.0" diff --git a/deps/crates/vendor/icu_calendar_data-v2/Cargo.toml.orig b/deps/crates/vendor/icu_calendar_data-v2/Cargo.toml.orig index f32d897671a5..6d59ca791359 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/Cargo.toml.orig +++ b/deps/crates/vendor/icu_calendar_data-v2/Cargo.toml.orig @@ -18,8 +18,8 @@ repository.workspace = true rust-version.workspace = true [package.metadata.sources] -cldr = { tagged = "48.2.0" } -icuexport = { tagged = "release-78.1rc" } +cldr = { tagged = "49.0.0" } +unicode = { tagged = "18.0.0" } segmenter_lstm = { tagged = "v0.1.0" } [lints.rust] diff --git a/deps/crates/vendor/icu_calendar_data-v2/README.md b/deps/crates/vendor/icu_calendar_data-v2/README.md index 5a8dd8de71d2..f54f584e4a58 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/README.md +++ b/deps/crates/vendor/icu_calendar_data-v2/README.md @@ -4,7 +4,7 @@ Data for the `icu_calendar` crate -This data was generated with CLDR version 48.2.0, ICU version release-78.1rc, and +This data was generated with CLDR version 49.0.0, Unicode version 18.0.0, and LSTM segmenter version v0.1.0. diff --git a/deps/crates/vendor/icu_calendar_data-v2/data/calendar_japanese_modern_v1.rs.data b/deps/crates/vendor/icu_calendar_data-v2/data/calendar_japanese_modern_v1.rs.data index ecfc337c398d..8ad9c320ca5f 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/data/calendar_japanese_modern_v1.rs.data +++ b/deps/crates/vendor/icu_calendar_data-v2/data/calendar_japanese_modern_v1.rs.data @@ -4,26 +4,25 @@ /// `icu`'s `_unstable` constructors. /// /// Using this implementation will embed the following data in the binary's data segment: -/// * 134B[^1] for the singleton data struct +/// * 7B[^1] for the singleton data struct /// /// [^1]: these numbers can be smaller in practice due to linker deduplication /// /// This macro requires the following crates: /// * `icu` /// * `icu_provider` -/// * `zerovec` #[doc(hidden)] #[macro_export] macro_rules! __impl_calendar_japanese_modern_v1 { ($ provider : ty) => { - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl $provider { #[doc(hidden)] - pub const SINGLETON_CALENDAR_JAPANESE_MODERN_V1: &'static ::DataStruct = &icu::calendar::provider::JapaneseEras { dates_to_eras: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"L\x07\0\0\n\x17meiji\0\0\0\0\0\0\0\0\0\0\0x\x07\0\0\x07\x1Etaisho\0\0\0\0\0\0\0\0\0\0\x86\x07\0\0\x0C\x19showa\0\0\0\0\0\0\0\0\0\0\0\xC5\x07\0\0\x01\x08heisei\0\0\0\0\0\0\0\0\0\0\xE3\x07\0\0\x05\x01reiwa\0\0\0\0\0\0\0\0\0\0\0") } }; + pub const SINGLETON_CALENDAR_JAPANESE_MODERN_V1: &'static ::DataStruct = &icu::calendar::provider::JapaneseEras::up_to_reiwa(); } - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl icu_provider::DataProvider for $provider { fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { if req.id.locale.is_unknown() { @@ -36,7 +35,7 @@ macro_rules! __impl_calendar_japanese_modern_v1 { }; ($ provider : ty , ITER) => { __impl_calendar_japanese_modern_v1!($provider); - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl icu_provider::IterableDataProvider for $provider { fn iter_ids(&self) -> Result>, icu_provider::DataError> { Ok([Default::default()].into_iter().collect()) @@ -45,7 +44,7 @@ macro_rules! __impl_calendar_japanese_modern_v1 { }; ($ provider : ty , DRY) => { __impl_calendar_japanese_modern_v1!($provider); - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl icu_provider::DryDataProvider for $provider { fn dry_load(&self, req: icu_provider::DataRequest) -> Result { if req.id.locale.is_unknown() { @@ -58,7 +57,7 @@ macro_rules! __impl_calendar_japanese_modern_v1 { }; ($ provider : ty , DRY , ITER) => { __impl_calendar_japanese_modern_v1!($provider); - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl icu_provider::DryDataProvider for $provider { fn dry_load(&self, req: icu_provider::DataRequest) -> Result { if req.id.locale.is_unknown() { @@ -68,7 +67,7 @@ macro_rules! __impl_calendar_japanese_modern_v1 { } } } - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl icu_provider::IterableDataProvider for $provider { fn iter_ids(&self) -> Result>, icu_provider::DataError> { Ok([Default::default()].into_iter().collect()) diff --git a/deps/crates/vendor/icu_calendar_data-v2/data/calendar_preferred_v1.rs.data b/deps/crates/vendor/icu_calendar_data-v2/data/calendar_preferred_v1.rs.data new file mode 100644 index 000000000000..8b249837e73b --- /dev/null +++ b/deps/crates/vendor/icu_calendar_data-v2/data/calendar_preferred_v1.rs.data @@ -0,0 +1,70 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 69B for the lookup data structure (9 data identifiers) +/// * 8B[^1] for the actual data (4 unique structs) +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_locale_core` +/// * `icu_provider` +/// * `icu_provider/baked` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_calendar_preferred_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.88"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.88"] + impl $provider { + const DATA_CALENDAR_PREFERRED_V1: icu_provider::baked::zerotrie::Data = { + const TRIE: icu_provider::baked::zerotrie::ZeroTrieSimpleAscii<&'static [u8]> = icu_provider::baked::zerotrie::ZeroTrieSimpleAscii { store: b"und\x80-\xC7ABIKQST\x06\x08\n\x0C\x0E\x10\xC2EF\x01\x81\x82H\x81R\x82W\x81A\x81A\x81H\x83" }; + const VALUES: &'static [::DataStruct] = &[icu::calendar::provider::CalendarPreference { default_algorithm: icu_locale_core::preferences::extensions::unicode::keywords::CalendarAlgorithm::Gregory, default_hijri_algorithm: icu_locale_core::preferences::extensions::unicode::keywords::HijriCalendarAlgorithm::Civil }, icu::calendar::provider::CalendarPreference { default_algorithm: icu_locale_core::preferences::extensions::unicode::keywords::CalendarAlgorithm::Gregory, default_hijri_algorithm: icu_locale_core::preferences::extensions::unicode::keywords::HijriCalendarAlgorithm::Umalqura }, icu::calendar::provider::CalendarPreference { default_algorithm: icu_locale_core::preferences::extensions::unicode::keywords::CalendarAlgorithm::Persian, default_hijri_algorithm: icu_locale_core::preferences::extensions::unicode::keywords::HijriCalendarAlgorithm::Civil }, icu::calendar::provider::CalendarPreference { default_algorithm: icu_locale_core::preferences::extensions::unicode::keywords::CalendarAlgorithm::Buddhist, default_hijri_algorithm: icu_locale_core::preferences::extensions::unicode::keywords::HijriCalendarAlgorithm::Civil }]; + unsafe { icu_provider::baked::zerotrie::Data::from_trie_and_values_unchecked(TRIE, VALUES) } + }; + } + #[clippy::msrv = "1.88"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + let mut metadata = icu_provider::DataResponseMetadata::default(); + let payload = if let Some(payload) = icu_provider::baked::DataStore::get(&Self::DATA_CALENDAR_PREFERRED_V1, req.id, req.metadata.attributes_prefix_match) { + payload + } else { + const FALLBACKER: icu_locale_fallback::LocaleFallbackerWithConfig<'static> = icu_locale_fallback::LocaleFallbacker::new().for_config(::INFO.fallback_config); + let mut fallback_iterator = FALLBACKER.fallback_for(req.id.locale.clone()); + loop { + if let Some(payload) = icu_provider::baked::DataStore::get(&Self::DATA_CALENDAR_PREFERRED_V1, icu_provider::DataIdentifierBorrowed::for_marker_attributes_and_locale(req.id.marker_attributes, fallback_iterator.get()), req.metadata.attributes_prefix_match) { + metadata.locale = Some(fallback_iterator.take()); + break payload; + } + if fallback_iterator.get().is_unknown() { + return Err(icu_provider::DataErrorKind::IdentifierNotFound.with_req(::INFO, req)); + } + fallback_iterator.step(); + } + }; + Ok(icu_provider::DataResponse { payload, metadata }) + } + } + }; + ($ provider : ty , ITER) => { + __impl_calendar_preferred_v1!($provider); + #[clippy::msrv = "1.88"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok(icu_provider::baked::DataStore::iter(&Self::DATA_CALENDAR_PREFERRED_V1).collect()) + } + } + }; + ($ provider : ty , DRY) => {}; + ($ provider : ty , DRY , ITER) => { + __impl_calendar_preferred_v1!($provider, ITER); + }; +} +#[doc(inline)] +pub use __impl_calendar_preferred_v1 as impl_calendar_preferred_v1; diff --git a/deps/crates/vendor/icu_calendar_data-v2/data/calendar_week_v1.rs.data b/deps/crates/vendor/icu_calendar_data-v2/data/calendar_week_v1.rs.data index dc2bc0feff28..c9bec451d993 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/data/calendar_week_v1.rs.data +++ b/deps/crates/vendor/icu_calendar_data-v2/data/calendar_week_v1.rs.data @@ -17,9 +17,9 @@ #[macro_export] macro_rules! __impl_calendar_week_v1 { ($ provider : ty) => { - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl $provider { const DATA_CALENDAR_WEEK_V1: icu_provider::baked::zerotrie::Data = { const TRIE: icu_provider::baked::zerotrie::ZeroTrieSimpleAscii<&'static [u8]> = icu_provider::baked::zerotrie::ZeroTrieSimpleAscii { store: b"und\x80-\xD7ABCDEGHIJKLMNOPQSTUVWYZ\t\x1E$06 for $provider { fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { let mut metadata = icu_provider::DataResponseMetadata::default(); let payload = if let Some(payload) = icu_provider::baked::DataStore::get(&Self::DATA_CALENDAR_WEEK_V1, req.id, req.metadata.attributes_prefix_match) { payload } else { - const FALLBACKER: icu::locale::fallback::LocaleFallbackerWithConfig<'static> = icu::locale::fallback::LocaleFallbacker::new().for_config(::INFO.fallback_config); + const FALLBACKER: icu_locale_fallback::LocaleFallbackerWithConfig<'static> = icu_locale_fallback::LocaleFallbacker::new().for_config(::INFO.fallback_config); let mut fallback_iterator = FALLBACKER.fallback_for(req.id.locale.clone()); loop { if let Some(payload) = icu_provider::baked::DataStore::get(&Self::DATA_CALENDAR_WEEK_V1, icu_provider::DataIdentifierBorrowed::for_marker_attributes_and_locale(req.id.marker_attributes, fallback_iterator.get()), req.metadata.attributes_prefix_match) { @@ -53,7 +53,7 @@ macro_rules! __impl_calendar_week_v1 { }; ($ provider : ty , ITER) => { __impl_calendar_week_v1!($provider); - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl icu_provider::IterableDataProvider for $provider { fn iter_ids(&self) -> Result>, icu_provider::DataError> { Ok(icu_provider::baked::DataStore::iter(&Self::DATA_CALENDAR_WEEK_V1).collect()) diff --git a/deps/crates/vendor/icu_calendar_data-v2/data/mod.rs b/deps/crates/vendor/icu_calendar_data-v2/data/mod.rs index ffa33a336237..26e03ff24746 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/data/mod.rs +++ b/deps/crates/vendor/icu_calendar_data-v2/data/mod.rs @@ -1,4 +1,5 @@ // @generated +include!("calendar_preferred_v1.rs.data"); include!("calendar_japanese_modern_v1.rs.data"); include!("calendar_week_v1.rs.data"); /// Marks a type as a data provider. You can then use macros like @@ -16,7 +17,7 @@ include!("calendar_week_v1.rs.data"); #[macro_export] macro_rules! __make_provider { ($ name : ty) => { - #[clippy::msrv = "1.86"] + #[clippy::msrv = "1.88"] impl $name { #[allow(dead_code)] pub(crate) const MUST_USE_MAKE_PROVIDER_MACRO: () = (); @@ -28,13 +29,14 @@ macro_rules! __make_provider { pub use __make_provider as make_provider; /// This macro requires the following crates: /// * `icu` +/// * `icu_locale_core` /// * `icu_provider` /// * `icu_provider/baked` -/// * `zerovec` #[allow(unused_macros)] macro_rules! impl_data_provider { ($ provider : ty) => { make_provider!($provider); + impl_calendar_preferred_v1!($provider); impl_calendar_japanese_modern_v1!($provider); impl_calendar_week_v1!($provider); }; diff --git a/deps/crates/vendor/icu_calendar_data-v2/src/lib.rs b/deps/crates/vendor/icu_calendar_data-v2/src/lib.rs index 90d2b19b7e3c..647b2e1505e9 100644 --- a/deps/crates/vendor/icu_calendar_data-v2/src/lib.rs +++ b/deps/crates/vendor/icu_calendar_data-v2/src/lib.rs @@ -4,7 +4,7 @@ //! Data for the `icu_calendar` crate //! -//! This data was generated with CLDR version 48.2.0, ICU version release-78.1rc, and +//! This data was generated with CLDR version 49.0.0, Unicode version 18.0.0, and //! LSTM segmenter version v0.1.0. #![no_std] @@ -15,3 +15,24 @@ include!(concat!(core::env!("ICU4X_DATA_DIR"), "/mod.rs")); #[cfg(not(icu4x_custom_data))] include!("../data/mod.rs"); + +#[macro_export] +macro_rules! cldr_tag { + () => { + "49.0.0" + }; +} + +#[macro_export] +macro_rules! unicode_tag { + () => { + "18.0.0" + }; +} + +#[macro_export] +macro_rules! segmenter_lstm_tag { + () => { + "v0.1.0" + }; +} diff --git a/deps/crates/vendor/icu_collections-v2/.cargo_vcs_info.json b/deps/crates/vendor/icu_collections-v2/.cargo_vcs_info.json deleted file mode 100644 index 2997b36686a6..000000000000 --- a/deps/crates/vendor/icu_collections-v2/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "c9fac4e625ccb2c6a7aa35079fff9709db4385ac" - }, - "path_in_vcs": "components/collections" -} \ No newline at end of file diff --git a/deps/crates/vendor/icu_collections-v2/Cargo.lock b/deps/crates/vendor/icu_collections-v2/Cargo.lock deleted file mode 100644 index 31aff5335ad5..000000000000 --- a/deps/crates/vendor/icu_collections-v2/Cargo.lock +++ /dev/null @@ -1,820 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "anes" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "bumpalo" -version = "3.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" - -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "clap" -version = "4.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" -dependencies = [ - "clap_builder", -] - -[[package]] -name = "clap_builder" -version = "4.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" -dependencies = [ - "anstyle", - "clap_lex", -] - -[[package]] -name = "clap_lex" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" - -[[package]] -name = "cobs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" -dependencies = [ - "thiserror", -] - -[[package]] -name = "criterion" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" -dependencies = [ - "anes", - "cast", - "ciborium", - "clap", - "criterion-plot", - "is-terminal", - "itertools", - "num-traits", - "once_cell", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" -dependencies = [ - "cast", - "itertools", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "databake" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4b1db5ca40636726f1f73daff0d626accbd49bcd8136fcade87d7cf1e6bbb" -dependencies = [ - "databake-derive", - "proc-macro2", - "quote", -] - -[[package]] -name = "databake-derive" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b537745234cbf0e296a3bd836d70a614dff4cb522b14e2680ef006bb1ed5ff" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "embedded-io" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" - -[[package]] -name = "embedded-io" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "half" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" -dependencies = [ - "cfg-if", - "crunchy", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "iai" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678" - -[[package]] -name = "icu_collections" -version = "2.2.0" -dependencies = [ - "criterion", - "databake", - "displaydoc", - "iai", - "postcard", - "potential_utf", - "serde", - "serde_json", - "toml", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "indexmap" -version = "2.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "is-terminal" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "js-sys" -version = "0.3.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "libc" -version = "0.2.183" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "oorandom" -version = "11.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" - -[[package]] -name = "plotters" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" - -[[package]] -name = "plotters-svg" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" -dependencies = [ - "plotters-backend", -] - -[[package]] -name = "postcard" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" -dependencies = [ - "cobs", - "embedded-io 0.4.0", - "embedded-io 0.6.1", - "serde", -] - -[[package]] -name = "potential_utf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" -dependencies = [ - "serde_core", - "zerovec", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "regex" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "yoke" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerofrom" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerovec" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" -dependencies = [ - "databake", - "serde", - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/deps/crates/vendor/icu_collections-v2/Cargo.toml b/deps/crates/vendor/icu_collections-v2/Cargo.toml deleted file mode 100644 index 7f57b47901a3..000000000000 --- a/deps/crates/vendor/icu_collections-v2/Cargo.toml +++ /dev/null @@ -1,215 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2021" -rust-version = "1.86" -name = "icu_collections" -version = "2.2.0" -authors = ["The ICU4X Project Developers"] -build = false -include = [ - "data/**/*", - "src/**/*", - "examples/**/*", - "benches/**/*", - "tests/**/*", - "Cargo.toml", - "LICENSE", - "README.md", - "build.rs", -] -autolib = false -autobins = false -autoexamples = false -autotests = false -autobenches = false -description = "Collection of API for use in ICU libraries." -homepage = "https://icu4x.unicode.org" -readme = "README.md" -keywords = [ - "unicode", - "data-structures", -] -categories = [ - "internationalization", - "localization", - "no-std", - "embedded", -] -license = "Unicode-3.0" -repository = "https://github.com/unicode-org/icu4x" - -[package.metadata.docs.rs] -all-features = true - -[package.metadata.cargo-all-features] -max_combination_size = 3 - -[features] -alloc = [ - "serde?/alloc", - "zerovec/alloc", -] -databake = [ - "dep:databake", - "zerovec/databake", -] -serde = [ - "dep:serde", - "zerovec/serde", - "potential_utf/serde", - "alloc", -] - -[lib] -name = "icu_collections" -path = "src/lib.rs" -bench = false - -[[test]] -name = "char16trie" -path = "tests/char16trie.rs" - -[[test]] -name = "cpt" -path = "tests/cpt.rs" - -[[bench]] -name = "codepointtrie" -path = "benches/codepointtrie.rs" -harness = false - -[[bench]] -name = "iai_cpt" -path = "benches/iai_cpt.rs" -harness = false - -[[bench]] -name = "inv_list" -path = "benches/inv_list.rs" -harness = false - -[dependencies.databake] -version = "0.2.0" -features = ["derive"] -optional = true -default-features = false - -[dependencies.displaydoc] -version = "0.2.3" -default-features = false - -[dependencies.potential_utf] -version = "0.1.3" -features = ["zerovec"] -default-features = false - -[dependencies.serde] -version = "1.0.220" -features = ["derive"] -optional = true -default-features = false - -[dependencies.utf8_iter] -version = "1.0.2" -default-features = false - -[dependencies.yoke] -version = "0.8.2" -features = ["derive"] -default-features = false - -[dependencies.zerofrom] -version = "0.1.6" -features = ["derive"] -default-features = false - -[dependencies.zerovec] -version = "0.11.6" -features = [ - "derive", - "yoke", -] -default-features = false - -[dev-dependencies.iai] -version = "0.1.1" - -[dev-dependencies.postcard] -version = "1.0.3" -features = ["alloc"] -default-features = false - -[dev-dependencies.serde] -version = "1.0.220" -features = ["derive"] -default-features = false - -[dev-dependencies.serde_json] -version = "1.0.45" - -[dev-dependencies.toml] -version = "0.8.0" -features = ["parse"] -default-features = false - -[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion] -version = "0.5.0" - -[lints.clippy] -alloc-instead-of-core = "warn" -branches-sharing-code = "warn" -collection_is_never_read = "warn" -crosspointer_transmute = "warn" -dbg_macro = "warn" -debug_assert_with_mut_call = "warn" -doc_markdown = "warn" -exhaustive_enums = "deny" -exhaustive_structs = "deny" -fn_to_numeric_cast_any = "warn" -infinite_loop = "warn" -large_stack_arrays = "warn" -mismatching_type_param_order = "warn" -missing_fields_in_debug = "warn" -missing_transmute_annotations = "warn" -negative_feature_names = "warn" -or-fun-call = "warn" -same_functions_in_if_condition = "warn" -todo = "warn" -transmute_bytes_to_str = "warn" -transmute_int_to_bool = "warn" -transmute_int_to_non_zero = "warn" -transmute_ptr_to_ptr = "warn" -transmute_ptr_to_ref = "warn" -transmute_undefined_repr = "warn" -transmutes_expressible_as_ptr_casts = "warn" -trivially_copy_pass_by_ref = "deny" -unnecessary-wraps = "warn" -useless_transmute = "warn" -wildcard_dependencies = "warn" - -[lints.rust] -missing_debug_implementations = "deny" -trivial_numeric_casts = "deny" -unused_lifetimes = "warn" -unused_macro_rules = "warn" -unused_qualifications = "warn" - -[lints.rust.unexpected_cfgs] -level = "warn" -priority = 0 -check-cfg = [ - "cfg(icu4c_enable_renaming)", - "cfg(needs_alloc_error_handler)", - "cfg(icu4x_run_size_tests)", - "cfg(icu4x_unstable_fast_trie_only)", -] diff --git a/deps/crates/vendor/icu_collections-v2/Cargo.toml.orig b/deps/crates/vendor/icu_collections-v2/Cargo.toml.orig deleted file mode 100644 index c15f61500b46..000000000000 --- a/deps/crates/vendor/icu_collections-v2/Cargo.toml.orig +++ /dev/null @@ -1,74 +0,0 @@ -# This file is part of ICU4X. For terms of use, please see the file -# called LICENSE at the top level of the ICU4X source tree -# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -[package] -name = "icu_collections" -description = "Collection of API for use in ICU libraries." -categories.workspace = true -keywords = ["unicode", "data-structures"] - -authors.workspace = true -edition.workspace = true -homepage.workspace = true -include.workspace = true -license.workspace = true -repository.workspace = true -rust-version.workspace = true -version.workspace = true - -[package.metadata.docs.rs] -all-features = true - -[package.metadata.cargo-all-features] -max_combination_size = 3 - -[dependencies] -displaydoc = { workspace = true } -yoke = { workspace = true, features = ["derive"] } -zerofrom = { workspace = true, features = ["derive"] } -zerovec = { workspace = true, features = ["derive", "yoke"] } -potential_utf = { workspace = true, features = ["zerovec"] } -utf8_iter = { workspace = true } - -serde = { workspace = true, features = ["derive"], optional = true } -databake = { workspace = true, features = ["derive"], optional = true } - -[dev-dependencies] -iai = { workspace = true } -icu = { path = "../../components/icu", default-features = false } -icu_properties = { path = "../../components/properties" } -postcard = { workspace = true, features = ["alloc"] } -serde = { workspace = true, features = ["derive"] } -serde_json = { workspace = true } - -toml = { workspace = true } - -[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] -criterion = { workspace = true } - -[features] -serde = ["dep:serde", "zerovec/serde", "potential_utf/serde", "alloc"] -databake = ["dep:databake", "zerovec/databake"] -alloc = ["serde?/alloc", "zerovec/alloc"] - -[lib] -bench = false # This option is required for Benchmark CI - -[[bench]] -name = "codepointtrie" -harness = false -path = "benches/codepointtrie.rs" - -[[bench]] -name = "iai_cpt" -harness = false -path = "benches/iai_cpt.rs" - -[[bench]] -name = "inv_list" -harness = false -path = "benches/inv_list.rs" - -[lints] -workspace = true diff --git a/deps/crates/vendor/icu_collections-v2/OWNERS b/deps/crates/vendor/icu_collections-v2/OWNERS deleted file mode 100644 index cbe7d0620c40..000000000000 --- a/deps/crates/vendor/icu_collections-v2/OWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# This file has been auto-generated by the `gnrt` tool. -file://third_party/rust/icu_collections/OWNERS diff --git a/deps/crates/vendor/icu_collections-v2/README.md b/deps/crates/vendor/icu_collections-v2/README.md deleted file mode 100644 index e90aa210bb69..000000000000 --- a/deps/crates/vendor/icu_collections-v2/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# icu_collections [![crates.io](https://img.shields.io/crates/v/icu_collections)](https://crates.io/crates/icu_collections) - - - -Efficient collections for Unicode data. - -This module is published as its own crate ([`icu_collections`](https://docs.rs/icu_collections/latest/icu_collections/)) -and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project. - -ICU4X `CodePointTrie` provides a read-only view of `CodePointTrie` data that is exported -from ICU4C. Detailed information about the design of the data structure can be found in the documentation -for the `CodePointTrie` struct. - -ICU4X `CodePointInversionList` provides necessary functionality for highly efficient querying of sets of Unicode characters. -It is an implementation of the existing [ICU4C UnicodeSet API](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UnicodeSet.html). - -ICU4X `Char16Trie` provides a data structure for a space-efficient and time-efficient lookup of -sequences of 16-bit units (commonly but not necessarily UTF-16 code units) -which map to integer values. -It is an implementation of the existing [ICU4C UCharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UCharsTrie.html) -/ [ICU4J CharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/util/CharsTrie.html) API. - - - -## More Information - -For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x). diff --git a/deps/crates/vendor/icu_collections-v2/benches/codepointtrie.rs b/deps/crates/vendor/icu_collections-v2/benches/codepointtrie.rs deleted file mode 100644 index e49401634dd5..000000000000 --- a/deps/crates/vendor/icu_collections-v2/benches/codepointtrie.rs +++ /dev/null @@ -1,104 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use criterion::{black_box, criterion_group, criterion_main, Criterion}; - -use icu_collections::codepointtrie::CodePointTrie; - -#[path = "tries/mod.rs"] -mod tries; - -mod sample_str_lng { - // "eng" is all ASCII - pub const ENG: &str = "Universal Declaration of Human Rights"; - // "pcd" has ASCII mixed with low-BMP code points - pub const PCD: &str = "Dèclaråcion dès dreûts d' l'ome po tos lès payîs dè monde"; - // "ukr" uses low-BMP code points (less than U+1000) - pub const UKR: &str = "ЗАГАЛЬНА ДЕКЛАРАЦІЯ ПРАВ ЛЮДИНІ"; - // "yue" uses high-BMP code points (greater than U+1000), so it benefits from fast mode - pub const YUE: &str = "世界人权宣言"; - // "ccp" exercises supplementary code points - pub const CCP: &str = "𑄟𑄚𑄬𑄭𑄃𑄇𑄴𑄇𑄥𑄧𑄁𑄢𑄴 𑄝𑄬𑄇𑄴𑄅𑄚𑄮𑄢𑄴 𑄟𑄧𑄚𑄳𑄢𑄧𑄧𑄇𑄉𑄮𑄌𑄴"; -} - -const SAMPLE_STRING_MIXED: &str = "Dèclaråcion ЗАГАЛЬНА 世界人权宣言 𑄟𑄚𑄬𑄭𑄃𑄇𑄴𑄇𑄥𑄧𑄁𑄢𑄴"; - -/// A function that returns 100 code points in the desired language -fn one_hundred_code_points(sample_str: &str) -> String { - sample_str.chars().cycle().take(100).collect() -} - -fn get_trie_small() -> CodePointTrie<'static, u8> { - CodePointTrie::try_new( - tries::gc_small::HEADER, - tries::gc_small::INDEX, - tries::gc_small::DATA, - ) - .unwrap() -} - -fn get_trie_fast() -> CodePointTrie<'static, u8> { - CodePointTrie::try_new( - tries::gc_fast::HEADER, - tries::gc_fast::INDEX, - tries::gc_fast::DATA, - ) - .unwrap() -} - -fn overview_bench(c: &mut Criterion) { - let s = one_hundred_code_points(SAMPLE_STRING_MIXED); - let cpt_small = get_trie_small(); - - c.bench_function("cpt/overview", |b| { - b.iter(|| { - black_box(&s) - .chars() - .map(|c| black_box(&cpt_small).get32(c as u32)) - .reduce(|a, b| a.wrapping_add(b)) - }); - }); - - c.bench_function("cpt/get_range", |b| { - b.iter(|| { - black_box(&s) - .chars() - .map(|c| black_box(&cpt_small).get_range(c as u32).unwrap()) - .fold(0u32, |acc, ele| { - acc.wrapping_add(ele.range.end() - ele.range.start() + ele.value as u32) - }) - }); - }); - - { - let cpt_fast = get_trie_fast(); - lang_bench(c, &cpt_small, "small/eng", sample_str_lng::ENG); - lang_bench(c, &cpt_small, "small/pcd", sample_str_lng::PCD); - lang_bench(c, &cpt_small, "small/ukr", sample_str_lng::UKR); - lang_bench(c, &cpt_small, "small/yue", sample_str_lng::YUE); - lang_bench(c, &cpt_small, "small/ccp", sample_str_lng::CCP); - lang_bench(c, &cpt_fast, "fast/eng", sample_str_lng::ENG); - lang_bench(c, &cpt_fast, "fast/pcd", sample_str_lng::PCD); - lang_bench(c, &cpt_fast, "fast/ukr", sample_str_lng::UKR); - lang_bench(c, &cpt_fast, "fast/yue", sample_str_lng::YUE); - lang_bench(c, &cpt_fast, "fast/ccp", sample_str_lng::CCP); - } -} - -fn lang_bench(c: &mut Criterion, cpt: &CodePointTrie, lid: &str, sample_str: &str) { - let bench_name = format!("cpt/get/{lid}"); - let s = one_hundred_code_points(sample_str); - - c.bench_function(&bench_name, |b| { - b.iter(|| { - black_box(&s) - .chars() - .map(|c| black_box(&cpt).get32(c as u32)) - .reduce(|a, b| a.wrapping_add(b)) - }); - }); -} - -criterion_group!(benches, overview_bench,); -criterion_main!(benches); diff --git a/deps/crates/vendor/icu_collections-v2/benches/iai_cpt.rs b/deps/crates/vendor/icu_collections-v2/benches/iai_cpt.rs deleted file mode 100644 index 3d57cbb4a168..000000000000 --- a/deps/crates/vendor/icu_collections-v2/benches/iai_cpt.rs +++ /dev/null @@ -1,77 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use icu_collections::codepointtrie::CodePointTrie; - -#[path = "tries/mod.rs"] -mod tries; - -// The string has 41 chars. -const SAMPLE_STRING_LATIN1: &str = "Declaration loremips umdolo loremipsompi"; -const SAMPLE_STRING_MIXED: &str = "Dèclaråcion ЗАГАЛЬНА 世界人权宣言 𑄟𑄚𑄬𑄭𑄃𑄇𑄴𑄇𑄥𑄧𑄁𑄢𑄴"; - -fn get_trie_small() -> CodePointTrie<'static, u8> { - CodePointTrie::try_new( - tries::gc_small::HEADER, - tries::gc_small::INDEX, - tries::gc_small::DATA, - ) - .unwrap() -} - -fn get_trie_fast() -> CodePointTrie<'static, u8> { - CodePointTrie::try_new( - tries::gc_fast::HEADER, - tries::gc_fast::INDEX, - tries::gc_fast::DATA, - ) - .unwrap() -} - -fn bench_iai_cpt_overview(fast: bool, mixed: bool) { - // Tests the instructions required to get CPT for 100,000 chars. - - let cpt = if fast { - get_trie_fast() - } else { - get_trie_small() - }; - let sample = if mixed { - SAMPLE_STRING_MIXED - } else { - SAMPLE_STRING_LATIN1 - }; - - let mut i: u8 = 0; - for c in sample.chars() { - i = i.wrapping_add(cpt.get32(c as u32)) - //i = i.wrapping_add(1); - } - - // Ensure the loop is not DCEd - assert!(i < 255); -} - -fn bench_iai_cpt_latin_fast() { - bench_iai_cpt_overview(true, false); -} - -fn bench_iai_cpt_latin_small() { - bench_iai_cpt_overview(false, false); -} - -fn bench_iai_cpt_mixed_fast() { - bench_iai_cpt_overview(true, true); -} - -fn bench_iai_cpt_mixed_small() { - bench_iai_cpt_overview(false, true); -} - -iai::main!( - bench_iai_cpt_latin_fast, - bench_iai_cpt_latin_small, - bench_iai_cpt_mixed_fast, - bench_iai_cpt_mixed_small, -); diff --git a/deps/crates/vendor/icu_collections-v2/benches/inv_list.rs b/deps/crates/vendor/icu_collections-v2/benches/inv_list.rs deleted file mode 100644 index 743c855af8c7..000000000000 --- a/deps/crates/vendor/icu_collections-v2/benches/inv_list.rs +++ /dev/null @@ -1,66 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use criterion::{criterion_group, criterion_main, Criterion}; -use icu_collections::codepointinvlist::CodePointInversionList; -use std::char; - -fn uniset_bench(c: &mut Criterion) { - let best_ex = [0x41, 0x46]; - let best_sample = CodePointInversionList::try_from_u32_inversion_list_slice(&best_ex).unwrap(); - let worst_ex: Vec = (0x0..((char::MAX as u32) + 1)).collect(); - let worst_sample = - CodePointInversionList::try_from_u32_inversion_list_slice(&worst_ex).unwrap(); - - c.bench_function("uniset/overview", |b| { - #[expect(clippy::suspicious_map)] - b.iter(|| { - best_sample - .iter_chars() - .map(|ch| best_sample.contains(ch)) - .count(); - worst_sample - .iter_chars() - .map(|ch| worst_sample.contains(ch)) - .count(); - best_sample - .iter_chars() - .map(|ch| best_sample.contains_range('A'..ch)) - .count(); - worst_sample - .iter_chars() - .take(100) - .map(|ch| worst_sample.contains_range(char::from_u32(0x0).unwrap()..ch)) - .count(); - }) - }); - - { - let mut group = c.benchmark_group("uniset/contains"); - group.bench_with_input("best", &best_sample, |b, sample| { - b.iter(|| sample.iter_chars().map(|ch| sample.contains(ch))) - }); - group.bench_with_input("worst", &worst_sample, |b, sample| { - b.iter(|| sample.iter_chars().take(100).map(|ch| sample.contains(ch))) - }); - group.finish(); - - let mut group = c.benchmark_group("uniset/contains_range"); - group.bench_with_input("best", &best_sample, |b, sample| { - b.iter(|| sample.iter_chars().map(|ch| sample.contains_range('A'..ch))) - }); - group.bench_with_input("worst", &worst_sample, |b, sample| { - b.iter(|| { - sample - .iter_chars() - .take(100) - .map(|ch| sample.contains_range(char::from_u32(0x0).unwrap()..ch)) - }) - }); - group.finish(); - } -} - -criterion_group!(benches, uniset_bench); -criterion_main!(benches); diff --git a/deps/crates/vendor/icu_collections-v2/benches/tries/gc_fast.rs b/deps/crates/vendor/icu_collections-v2/benches/tries/gc_fast.rs deleted file mode 100644 index ba98a40f78e8..000000000000 --- a/deps/crates/vendor/icu_collections-v2/benches/tries/gc_fast.rs +++ /dev/null @@ -1,1128 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use icu_collections::codepointtrie::{CodePointTrieHeader, TrieType}; -use zerovec::ule::AsULE; -use zerovec::{zerovec, ZeroVec}; - -#[rustfmt::skip] -pub const INDEX: ZeroVec = zerovec!(u16; ::ULE::from_unsigned; - [ - 0,0x40,0x7f,0xbf,0xff,0x12e,0x16d,0x1ad,0x1e5,0x224,0x250,0x28e,0x2ce,0x2de,0x31e,0x34f, - 0x38c,0x3bc,0x3fa,0x43a,0x44a,0x47b,0x4b2,0x4f2,0x532,0x572,0x5a3,0x5cf,0x60f,0x644,0x65e,0x69e, - 0x6de,0x71e,0x756,0x78d,0x7ca,0x809,0x848,0x887,0x8c6,0x905,0x944,0x983,0x9c3,0xa01,0xa3f,0xa7f, - 0xabf,0xafe,0xb3e,0xb7e,0xbbe,0xbfd,0xc3d,0xc7d,0xcbc,0xcfc,0xd3b,0xd7b,0xdbb,0xdfb,0xe3b,0xe79, - 0xeb9,0xef9,0xf37,0xf71,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xfb1,0xfe8,0x1026,0x1055,0x107a,0x10ba,0x10da, - 0x111a,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x112d,0x116d,0x118d,0x11cd,0x120d,0x124d,0x128b, - 0x12cb,0x1308,0x1348,0x1378,0x13b8,0x13f8,0x1438,0x146e,0x14ae,0x14d9,0x1519,0x1558,0x1598,0x15d6,0x1616,0x1650, - 0x1690,0x16d0,0x1710,0x1750,0x1790,0x17bc,0x17a1,0x2ce,0x17fc,0x17fc,0x1826,0x17fc,0x1865,0x18a5,0x18e5,0x1924, - 0x1964,0x19a3,0x19e3,0x1a22,0x1a62,0x1aa2,0x1adf,0x1b11,0x1b45,0x1b45,0x1b45,0x1b45,0x1b85,0x1bb0,0x1bed,0x1c21, - 0x1c43,0x1c83,0x1ca7,0x1cc3,0x1d03,0x1d03,0x1bb5,0x1d42,0x1d03,0x1bbd,0x1d03,0x1d03,0x1d03,0x1d82,0x1cef,0x1dc2, - 0x1d03,0x1d03,0x1d03,0x1d03,0x1b45,0x1b45,0x1dff,0x1e27,0x1b45,0x1b45,0x1b45,0x1b45,0x1e67,0x1ea2,0x1ed8,0x1d03, - 0x38c,0x1f18,0x17fc,0x1f57,0x1f97,0x1fc7,0x2007,0x2027,0x2067,0x20a7,0x20e7,0x2102,0x1d03,0x1d03,0x1d03,0x2120, - 0x2160,0x21a0,0x21c9,0x21ea,0x222a,0x5a3,0x225b,0x229b,0x22db,0x2313,0x2329,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1d03,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x12f6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x2369,0x23a2,0x5a3,0x5a3,0x5a3,0x5a3,0x23e2,0x2422,0x2462,0x2482,0x24c2,0x24f4,0x2532,0x256e, - 0x25ac,0x25ec,0x262c,0x2668,0x26a8,0x26e1,0x2721,0x2760,0x27a0,0x27e0,0x281e,0x285e,0x289d,0x28cd,0x28fd,0x293d, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x297d,0x29b6, - 0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6, - 0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6, - 0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36, - 0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36, - 0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36, - 0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36, - 0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36, - 0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36, - 0x2a36,0x2a36,0x2a36,0x2a36,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x2a76,0x5a3,0x2aa6,0x2ae6,0x2b26,0x2b34,0x2b71, - 0x5a3,0x5a3,0x5a3,0x5a3,0x2b84,0x2bc4,0x2bf4,0x2c2c,0x2c6c,0x2ca8,0x5a3,0x2cde,0x2d1e,0x2d5e,0x2d8f,0x2dce, - 0xac0,0xade,0xafb,0xb1a,0xb3a,0xb3a,0xb47,0xb64,0xb84,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e, - 0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e, - 0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e, - 0xb8e,0xb8e,0xb8e,0xb8e,0xbae,0xb8e,0xb8e,0xb8e,0xbce,0xbce,0xbce,0xbcf,0xbce,0xbce,0xbce,0xbcf, - 0x865,0x5a3,0xae1,0x2e0e,0x50f,0x50f,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x73e, - 0x2e1e,0x10a3,0x10a3,0x2e2a,0x1ac2,0x1ac2,0x1ac2,0x2e3a,0x2e43,0x1c5d,0x1c69,0xd18,0xd18,0x1d03,0x1d03,0x2e53, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x510,0x5a3,0x5a3,0x5a3,0x993,0x2e63,0x2e67, - 0x5a3,0x5a3,0x2e6f,0x5a3,0x2e7e,0x5a3,0x5a3,0x2e8e,0x5a3,0x2e9e,0x5a3,0x5a3,0x1460,0x2ead,0xd18,0xd18, - 0x41,0x41,0x342,0x28fd,0x28fd,0x5a3,0x5a3,0x5a3,0x5a3,0x50f,0xb24,0x41,0x41,0x2ebd,0x28fd,0x2ec5, - 0x5a3,0x5a3,0x13a6,0x5a3,0x5a3,0x5a3,0x2ed5,0x335,0x335,0x2ee5,0x2ef3,0x2f01,0xd18,0xd18,0xd18,0xd18, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x13a7,0x5a3,0x13a8,0x13a6,0xd18,0x2f11,0x280,0x280,0x2f16,0xd18,0xd18,0xd18,0xd18, - 0x2f26,0x5a3,0x5a3,0x2f30,0x5a3,0x2f3f,0x5a3,0x2f4f,0x5a3,0x50e,0x1c9c,0xd18,0xd18,0xd18,0x5a3,0x2f5f, - 0x5a3,0x2f6f,0x5a3,0x2f7f,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x2f8f,0x10a3,0x1ca1,0x10a3,0x10a3, - 0x2f9e,0x94e,0x5a3,0x2fae,0x2e6a,0x2fbe,0x5a3,0x2fce,0x5a3,0x2fde,0xd18,0xd18,0x2fee,0x5a3,0x2ff9,0x3009, - 0x5a3,0x5a3,0x5a3,0x3019,0x5a3,0x3029,0x5a3,0x3039,0x5a3,0x3049,0x1c9a,0xd18,0xd18,0xd18,0xd18,0xd18, - 0x5a3,0x5a3,0x5a3,0x5a3,0x1338,0xd18,0xd18,0xd18,0x41,0x41,0x41,0x3059,0x28fd,0x28fd,0x28fd,0x3069, - 0x5a3,0x5a3,0x3079,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0x10a3,0x10a8,0x5a3,0x5a3,0x3089,0xd99,0xd18,0xd18,0xd18,0xd18,0x5a3,0x2fde,0x3099,0x5a3,0x577,0x30a9, - 0xd18,0x5a3,0x30b9,0xd18,0xd18,0x5a3,0x30c9,0xd18,0x5a3,0x13a7,0x281b,0x5a3,0x5a3,0x575,0x30d9,0x1ca1, - 0x30e9,0x30f9,0x7cb,0x5a3,0x5a3,0x3109,0x3117,0x5a3,0x1338,0xb24,0x773,0x5a3,0x3127,0x3134,0x3144,0x5a3, - 0x5a3,0x3154,0x7cb,0x5a3,0x5a3,0x3164,0x3173,0x3183,0x1ca2,0x3193,0x5a3,0x954,0x31a3,0x31b2,0xd18,0xd18, - 0xd18,0xd18,0x31c2,0x863,0x31d1,0x5a3,0x5a3,0x630,0x31e1,0xb24,0x31f1,0x858,0x868,0x3200,0x3210,0x3220, - 0x322e,0x1562,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x323e,0x324e,0x325e, - 0xd99,0xd18,0x5a3,0x5a3,0x5a3,0x326e,0x327d,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x5a3,0x5a3,0xed5,0x328d,0x329c,0x32a4,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x32b4,0x32c3,0xb24, - 0x32d3,0xd18,0x5a3,0x5a3,0x32e3,0x32f3,0xb24,0xd18,0xd18,0xd18,0x5a3,0x108a,0x3303,0x3313,0x13a7,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x31a3,0x3323,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0x41,0x41,0x28fd,0x28fd,0xc23,0x3333,0x3342,0x334e,0x5a3,0x335e,0x336e,0xb24, - 0xd18,0xd18,0xd18,0xd18,0x2a9c,0x5a3,0x5a3,0x337e,0x338e,0xd18,0x339e,0x5a3,0x5a3,0x33ab,0x33ba,0x33ca, - 0x5a3,0x5a3,0x573,0x33da,0x33e8,0x5a3,0x5a3,0x5a3,0x5a3,0x1338,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x868,0x5a3,0xed5,0x33f8,0x3408,0xc23, - 0x10aa,0x550,0x5a3,0xe2a,0x3418,0x3427,0xd18,0xd18,0xd18,0xd18,0x96e,0x5a3,0x5a3,0x3437,0x3446,0xb24, - 0x3456,0x5a3,0x3460,0x3470,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0x5a3,0x3480,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0x993,0x10a3,0x3490,0x349f,0x34ad,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1337,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x34bd,0x34cd,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd97,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x34dd,0x5a3,0x5a3,0x50e,0x34ed,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x13a7,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0x5a3,0x5a3,0x5a3,0x1338,0x5a3,0x50e,0x2770,0x5a3,0x5a3,0x5a3,0x5a3,0x50e,0xb24,0x5a3,0x50f, - 0x34fd,0x5a3,0x5a3,0x5a3,0x350d,0x351d,0x352d,0x353b,0x741,0x5a3,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0x41,0x41,0x28fd,0x28fd,0x10a3,0x354b,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3, - 0x5a3,0xe1d,0x355b,0x355c,0x355c,0x3564,0x3573,0xd18,0xd18,0xd18,0xd18,0x3581,0x3591,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x13a6,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x13a8,0xd18,0xd18,0x1338,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x35a1,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0xd98,0xd18,0xd18,0xd98,0x2ed1,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x511,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x73e,0x510,0x1338,0x35b1,0x35c1, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x2ce,0x2ce,0x641,0x2ce,0x1560,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03, - 0x1d03,0x1c66,0xd18,0xd18,0xd18,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03, - 0x1d03,0x1d03,0x1d03,0x1d03,0x1c64,0x1d03,0x1d03,0x1ecf,0x1d03,0x1d03,0x1d03,0x35d1,0x35de,0x35eb,0x1d03,0x35f7, - 0x1d03,0x1d03,0x1d03,0x1c5f,0xd18,0x1d03,0x1d03,0x1d03,0x1d03,0x3605,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0x10a3,0x3615,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c63,0x10a3,0x2e6a,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x41,0x3b2,0x28fd,0x3625,0x3ae,0x2ef0,0x1865,0x41,0xdc,0x3635,0x3645, - 0x3653,0x2ef1,0x41,0x3b2,0x28fd,0x3660,0x366d,0x28fd,0x367b,0x368b,0x369a,0x369e,0x41,0xd8,0x28fd,0x41, - 0x3b2,0x28fd,0x3625,0x3ae,0x28fd,0x1865,0x41,0xdc,0x369e,0x41,0xd8,0x28fd,0x41,0x3b2,0x28fd,0x36ae, - 0x41,0x36bd,0xeb,0x38a,0x36cd,0x28fd,0x36d9,0x41,0x36b9,0xe7,0x36c7,0xc7,0x28fd,0xed,0x41,0x36e5, - 0x28fd,0x36f2,0x3700,0x3700,0x3700,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03, - 0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03, - 0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x2ce,0x2ce,0x2ce,0x3710,0x2ce,0x2ce,0x371b,0x3728,0x3734,0x1a27,0x4c2, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x25a,0x1fae,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xe4c,0x3744,0x3752,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x510,0x3762,0x3772,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x3782,0xd18,0x5a3,0x5a3,0x633,0x3792,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x37a2,0x50e,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x37b2,0x1560,0xd18,0xd18,0x41,0x41,0xdc,0x28fd, - 0x37c2,0x2770,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x1ca2,0x10a3,0x10a3,0x37d2, - 0x37e2,0xd18,0xd18,0xd18,0xd18,0x1ca2,0x10a3,0x37f2,0x10a9,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xae4,0x5a3,0x3802,0x380f,0x381d,0x382d,0x383b,0x3843,0x867,0x511,0x3852, - 0x511,0xd18,0xd18,0xd18,0x3862,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x1d03,0x1d03,0x1c5e,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c66,0x1c5b, - 0x148b,0x148b,0x148b,0x1d03,0x1c64,0x1cb6,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c5c, - 0xd18,0xd18,0xd18,0x1c7d,0x1d03,0x1c67,0x1d03,0x1d03,0x1c5e,0x1c61,0x1c68,0x1c64,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03, - 0x1d03,0x1d03,0x1d03,0x1d03,0x3872,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03, - 0x1d03,0x1d03,0x3882,0x1c5d,0x1c5d,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c66,0x1d03,0x1d03,0x1d03, - 0x1d03,0x1d03,0x1c61,0x1c5e,0x1c69,0x1c5e,0x1d03,0x1d03,0x1d03,0x1c62,0x10ca,0x1d03,0x1d03,0x1c62,0x1d03,0x1c5c, - 0x1c68,0xd18,0xd18,0xd18,0xd18,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03, - 0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c66,0x1c5c,0x388f,0x1c63,0x1d03,0x1c5d,0x1c5f,0x1c64,0x10ca,0x1c62,0x1c63, - 0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1eeb,0x1d03,0x1d03,0x1c5f,0xd18,0xd18,0xb24, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd18,0xd18, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x1338,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x50f,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd99, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x993,0xd18, - 0x5a3,0x50f,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x73e,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0x389e,0xd18,0x38ae,0x38ae,0x38ae,0x38ae,0x38ae,0x38ae,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0xd18, - 0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36, - 0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x38be, - 0x440,0x460,0x480,0x4a0,0x4c0,0x4e0,0x500,0x51a,0x53a,0x55a,0x57a,0x59a,0x5ba,0x5da,0x5fa,0x615, - 0xd0,0x635,0x655,0x66a,0x66a,0x66a,0x66a,0x671,0xd0,0xd0,0x691,0x66a,0x66a,0x66a,0x66a,0x66a, - 0xd0,0x6b1,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a, - 0x66a,0x66a,0xd0,0x6d1,0x66a,0x6ed,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x70d,0xd0, - 0xd0,0x72d,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a, - 0x66a,0x66a,0x73e,0x75e,0x775,0x66a,0x66a,0x66a,0x66a,0x795,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a, - 0x66a,0x7a5,0x7c5,0x7e5,0x805,0x825,0x845,0x865,0x66a,0x875,0x895,0x8ac,0x66a,0x8bc,0x8dc,0x66a, - 0x8f5,0x915,0x935,0x955,0x845,0x975,0x995,0x9b0,0x66a,0x66a,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x9d0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0x9e0,0x9ff,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xa15,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xa20,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a, - 0xd0,0xa40,0x66a,0x66a,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xa60,0x66a,0x66a, - 0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a, - 0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0xa80,0x66a, - 0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a, - 0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x380,0x380, - 0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380, - 0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0xaa0 - ] -); - -#[rustfmt::skip] -pub const DATA: ZeroVec = zerovec!(u8; core::convert::identity; - [ - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17, - 9,9,9,9,9,9,9,9,9,9,0x17,0x17,0x18,0x18,0x18,0x17, - 0x17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,0x14,0x17,0x15,0x1a,0x16, - 0x1a,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0xf, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc, - 0x17,0x19,0x19,0x19,0x19,0x1b,0x17,0x1a,0x1b,5,0x1c,0x18,0x10,0x1b,0x1a,0x1b, - 0x18,0xb,0xb,0x1a,2,0x17,0x17,0x1a,0xb,5,0x1d,0xb,0xb,0xb,0x17,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,0x18,1,1,1,1,1,1,1,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,0x18,2,2,2,2,2,2,2,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,1,2,1,2,1,2,2,1,1, - 2,1,2,1,1,2,1,1,1,2,2,1,1,1,1,2, - 1,1,2,1,1,1,2,2,2,1,1,2,1,1,2,1, - 2,1,2,1,1,2,1,2,2,1,2,1,1,2,1,1, - 1,2,1,2,1,1,2,2,5,1,2,2,2,5,5,5, - 5,1,3,2,1,3,2,1,3,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,3, - 2,1,2,1,1,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,2,2,2,2,2,2,1, - 1,2,1,1,2,1,2,1,1,1,1,2,1,2,1,2, - 1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,5,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,4,4,4, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4, - 4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,0x1a,4,0x1a,0x1a,0x1a, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,2, - 1,2,4,0x1a,1,2,0,0,4,2,2,2,0x17,1,0,0, - 0,0,0x1a,0x1a,1,0x17,1,1,1,0,1,0,1,1,2,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2, - 2,1,1,1,2,2,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2, - 2,2,2,1,2,0x18,1,2,1,1,2,2,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,0x1b,6,6,6, - 6,6,7,7,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,0,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,0,0,4,0x17,0x17,0x17,0x17,0x17,0x17,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,0x17,0x13,0,0,0x1b, - 0x1b,0x19,0,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 0x13,6,0x17,6,6,0x17,6,6,0x17,6,0,0,0,0,0,0, - 0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, - 0,5,5,5,5,0x17,0x17,0,0,0,0,0,0,0,0,0, - 0,0,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18,0x18,0x17,0x17,0x19,0x17,0x17, - 0x1b,0x1b,6,6,6,6,6,6,6,6,6,6,6,0x17,0x10,0x17, - 0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,4,5,5,5,5,5,5,5,5,5,5,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,9,9,9,9,9,9,9,9,9,9,0x17,0x17,0x17,0x17, - 5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,0x17,5,6,6,6,6,6,6,6,0x10,0x1b,6,6, - 6,6,6,6,4,4,6,6,0x1b,6,6,6,6,5,5,9, - 9,9,9,9,9,9,9,9,9,5,5,5,0x1b,0x1b,5,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0x10,5, - 6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0, - 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,5, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9, - 9,9,9,9,9,9,9,9,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6, - 6,6,4,4,0x1b,0x17,0x17,0x17,4,0,0,6,0x19,0x19,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,6,6,6,6,4,6,6,6,6,6,6,6, - 6,6,4,6,6,6,4,6,6,6,6,6,0,0,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,6,6,6,0,0,0x17,0,5,5, - 5,5,5,5,5,5,5,5,5,0,0,0,0,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1a,5, - 5,5,5,5,5,0,0x10,0x10,0,0,0,0,0,0,6,6, - 6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0x10, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,8,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,6,8,6,5,8,8,6,6,6,6,6,6, - 6,6,8,8,8,8,6,8,8,5,6,6,6,6,6,6, - 6,5,5,5,5,5,5,5,5,5,5,6,6,0x17,0x17,9, - 9,9,9,9,9,9,9,9,9,0x17,4,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,6,8,8,0,5,5,5, - 5,5,5,5,5,0,0,5,5,0,0,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0,5,5,5,5,5,5,5,0,5,0,0,0,5,5, - 5,5,0,0,6,5,8,8,6,6,6,6,0,0,8,8, - 0,0,8,8,6,5,0,0,0,0,0,0,0,0,8,0, - 0,0,0,5,5,0,5,5,5,6,6,0,0,9,9,9, - 9,9,9,9,9,9,9,5,5,0x19,0x19,0xb,0xb,0xb,0xb,0xb, - 0xb,0x1b,0x19,5,0x17,6,0,6,6,8,0,5,5,5,5,5, - 5,0,0,0,0,5,5,0,0,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, - 5,5,5,5,5,5,5,0,5,5,0,5,5,0,5,5, - 0,0,6,0,8,8,6,6,0,0,0,0,6,6,0,0, - 6,6,6,0,0,0,6,0,0,0,0,0,0,0,5,5, - 5,5,0,5,0,0,0,0,0,0,0,9,9,9,9,9, - 9,9,9,9,9,6,6,5,5,5,6,0x17,0,0,0,0, - 0,0,0,0,0,6,6,8,0,5,5,5,5,5,5,5, - 5,5,0,5,5,5,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, - 5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0, - 6,5,8,8,6,6,6,6,6,0,6,6,8,0,8,8, - 6,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,5,5,6,6,0,0,9,9,9,9,9,9,9, - 9,9,9,0x17,0x19,0,0,0,0,0,0,0,5,6,6,6, - 6,6,6,0,6,8,8,0,5,5,5,5,5,5,5,5, - 0,0,5,5,0,0,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5, - 5,5,5,5,0,5,5,0,5,5,5,5,5,0,0,6, - 5,8,6,6,6,6,0,0,8,8,0,0,8,8,6,0, - 0,0,0,0,0,0,6,6,8,0,0,0,0,5,5,0, - 5,5,5,6,6,0,0,9,9,9,9,9,9,9,9,9, - 9,0x1b,5,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0, - 0,6,5,0,5,5,5,5,5,5,0,0,0,5,5,5, - 0,5,5,5,5,0,0,0,5,5,0,5,0,5,5,0, - 0,0,5,5,0,0,0,5,5,5,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,0,0,0,0,8,8,6, - 8,8,0,0,0,8,8,8,0,8,8,8,6,0,0,5, - 0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,0xb, - 0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0,0,0,0,0,6, - 8,8,8,6,5,5,5,5,5,5,5,5,0,5,5,5, - 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,0,0,6,5,6,6,8, - 8,8,8,0,6,6,6,0,6,6,6,6,0,0,0,0, - 0,0,0,6,6,0,5,5,5,0,0,5,0,0,5,5, - 6,6,0,0,9,9,9,9,9,9,9,9,9,9,0,0, - 0,0,0,0,0,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,5,6, - 8,8,0x17,5,5,5,5,5,5,5,5,0,5,5,5,0, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5, - 5,5,0,5,5,5,5,5,0,0,6,5,8,6,8,8, - 8,8,8,0,6,8,8,0,8,8,6,6,0,0,0,0, - 0,0,0,8,8,0,0,0,0,0,0,5,5,0,5,5, - 6,6,0,0,9,9,9,9,9,9,9,9,9,9,0,5, - 5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6, - 8,8,5,5,5,5,5,5,5,5,5,0,5,5,5,0, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,6,6,5,8,8,6,6, - 6,6,0,8,8,8,0,8,8,8,6,5,0x1b,0,0,0, - 0,5,5,5,8,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,6, - 6,0,0,9,9,9,9,9,9,9,9,9,9,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0x1b,5,5,5,5,5,5,0,6,8, - 8,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, - 5,5,5,5,5,5,5,5,5,0,5,0,0,5,5,5, - 5,5,5,5,0,0,0,6,0,0,0,0,8,8,8,6, - 6,6,0,6,0,8,8,8,8,8,8,8,8,0,0,0, - 0,0,0,9,9,9,9,9,9,9,9,9,9,0,0,8, - 8,0x17,0,0,0,0,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5, - 6,6,6,6,6,6,6,0,0,0,0,0x19,5,5,5,5, - 5,5,4,6,6,6,6,6,6,6,6,0x17,9,9,9,9, - 9,9,9,9,9,9,0x17,0x17,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5, - 0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, - 5,0,5,5,5,5,5,5,5,5,5,5,6,5,5,6, - 6,6,6,6,6,6,6,6,5,0,0,5,5,5,5,5, - 0,4,0,6,6,6,6,6,6,0,0,9,9,9,9,9, - 9,9,9,9,9,0,0,5,5,5,5,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,5,0x1b,0x1b,0x1b,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x17, - 0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,9,9,9,9,9, - 9,9,9,9,9,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b, - 6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8,5,5,5,5,5, - 5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,0,0,0,0,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,8,6,6,6,6,6, - 0x17,6,6,5,5,5,5,5,6,6,6,6,6,6,6,6, - 6,6,6,0,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b, - 0x1b,0x1b,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,8,8,6,6,6,6,8,6,6,6,6,6, - 6,8,6,6,8,8,6,6,5,9,9,9,9,9,9,9, - 9,9,9,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,8, - 8,6,6,5,5,5,5,6,6,6,5,8,8,8,5,5, - 8,8,8,8,8,8,8,5,5,5,6,6,6,6,5,5, - 5,5,5,5,5,5,5,5,5,6,8,8,6,6,8,8, - 8,8,8,8,6,5,8,9,9,9,9,9,9,9,9,9, - 9,8,8,8,6,0x1b,0x1b,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0, - 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,0x17,4,2,2, - 2,5,5,5,5,5,5,5,5,5,0,5,5,5,5,0, - 0,5,5,5,5,5,5,5,0,5,0,5,5,5,5,0, - 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0, - 5,5,5,5,5,5,5,0,5,5,5,5,0,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,0,5,5,5,5,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,0,0,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,0x17,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,0,2,2,2,2,2,2,0,0,0x13,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,0x1b,0x17,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0xc,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,0x14,0x15,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,0x17,0x17,0x17,0xa,0xa,0xa,5,5, - 5,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, - 6,6,8,0,0,0,0,0,0,0,0,0,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, - 6,8,0x17,0x17,0,0,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, - 6,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,0,5,5,5,0,6, - 6,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,6,6,8,6,6,6,6,6,6,6,8,8,8,8,8, - 8,6,8,8,6,6,6,6,6,6,6,6,6,6,6,0x17, - 0x17,0x17,4,0x17,0x17,0x17,0x19,5,6,0,0,9,9,9,9,9, - 9,9,9,9,9,0,0,0,0,0,0,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17, - 0x17,0x13,0x17,0x17,0x17,0x17,6,6,6,0x10,6,9,9,9,9,9, - 9,9,9,9,9,0,0,0,0,0,0,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0,0,0,0,0,0,0,5,5,5,5,5,6,6,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,6,5,0,0,0,0,0,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, - 0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,0,6,6,6,8,8,8,8,6, - 6,8,8,8,0,0,0,0,8,8,6,8,8,8,8,8, - 8,6,6,6,0,0,0,0,0x1b,0,0,0,0x17,0x17,9,9, - 9,9,9,9,9,9,9,9,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,0,0,5,5,5,5,5,0,0,0, - 0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,0,0,0,0,0,0,9,9, - 9,9,9,9,9,9,9,9,0xb,0,0,0,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,6,6,8,8,6,0,0,0x17,0x17,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,6, - 8,6,6,6,6,6,6,6,0,6,8,6,8,8,6,6, - 6,6,6,6,6,6,8,8,8,8,8,8,6,6,6,6, - 6,6,6,6,6,6,0,0,6,9,9,9,9,9,9,9, - 9,9,9,0,0,0,0,0,0,9,9,9,9,9,9,9, - 9,9,9,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 4,0x17,0x17,0x17,0x17,0x17,0x17,0,0,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,7,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,6,6,6,6,8,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,6,8,6,6, - 6,6,6,8,6,8,8,8,6,8,8,5,5,5,5,5, - 5,5,5,0,0,0,9,9,9,9,9,9,9,9,9,9, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x17,0x17,0,6,6,8,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,8,6,6,6,6,8,8,6,6, - 8,6,6,6,5,5,9,9,9,9,9,9,9,9,9,9, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,6,8,6,6,8,8,8,6,8,6, - 6,6,8,8,0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,8,8,8,8,8,8,8,8,6,6,6,6, - 6,6,6,6,8,8,6,6,0,0,0,0x17,0x17,0x17,0x17,0x17, - 9,9,9,9,9,9,9,9,9,9,0,0,0,5,5,5, - 9,9,9,9,9,9,9,9,9,9,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,4,4,4,4,4,4,0x17,0x17, - 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0, - 6,6,6,0x17,6,6,6,6,6,6,6,6,6,6,6,6, - 6,8,6,6,6,6,6,6,6,5,5,5,5,6,5,5, - 5,5,5,5,6,5,5,8,6,6,5,0,0,0,0,0, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2, - 2,2,2,2,4,2,2,2,2,2,2,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,2,2,2,2, - 2,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,2,2,2,2,2,2,2,1,1,1, - 1,1,1,1,1,2,2,2,2,2,2,0,0,1,1,1, - 1,1,1,0,0,2,2,2,2,2,2,2,2,1,1,1, - 1,1,1,1,1,2,2,2,2,2,2,2,2,1,1,1, - 1,1,1,1,1,2,2,2,2,2,2,0,0,1,1,1, - 1,1,1,0,0,2,2,2,2,2,2,2,2,0,1,0, - 1,0,1,0,1,2,2,2,2,2,2,2,2,1,1,1, - 1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,0,0,2,2,2,2,2,2,2,2,3,3,3, - 3,3,3,3,3,2,2,2,2,2,2,2,2,3,3,3, - 3,3,3,3,3,2,2,2,2,2,2,2,2,3,3,3, - 3,3,3,3,3,2,2,2,2,2,0,2,2,1,1,1, - 1,3,0x1a,2,0x1a,0x1a,2,2,2,0,2,2,1,1,1,1, - 3,0x1a,0x1a,0x1a,2,2,2,2,0,0,2,2,1,1,1,1, - 0,0x1a,0x1a,0x1a,2,2,2,2,2,2,2,2,1,1,1,1, - 1,0x1a,0x1a,0x1a,0,0,2,2,2,0,2,2,1,1,1,1, - 3,0x1a,0x1a,0,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x10, - 0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c,0x1d,0x14,0x1c, - 0x1c,0x1d,0x14,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd,0xe,0x10,0x10, - 0x10,0x10,0x10,0xc,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1c,0x1d,0x17, - 0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,0x17,0xc,0x10,0x10,0x10,0x10,0x10,0,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0xb,4,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18,0x18, - 0x14,0x15,4,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18,0x18, - 0x14,0x15,0,4,4,4,4,4,4,4,4,4,4,4,4,4, - 0,0,0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, - 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, - 0x19,0x19,0x19,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,7, - 7,7,7,6,7,7,7,6,6,6,6,6,6,6,6,6, - 6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0x1b,0x1b,1,0x1b,0x1b,0x1b,0x1b,1,0x1b,0x1b,2,1,1,1, - 2,2,1,1,1,2,0x1b,1,0x1b,0x1b,0x18,1,1,1,1,1, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1,0x1b,1,0x1b,1,0x1b,1,1,1,1, - 0x1b,2,1,1,1,1,2,5,5,5,5,2,0x1b,0x1b,2,2, - 1,1,0x18,0x18,0x18,0x18,0x18,1,2,2,2,2,0x1b,0x18,0x1b,0x1b, - 2,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, - 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, - 0xa,0xa,1,2,0xa,0xa,0xa,0xa,0xb,0x1b,0x1b,0,0,0,0,0x18, - 0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x18, - 0x1b,0x1b,0x18,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18, - 0x18,0x1b,0x1b,0x18,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14, - 0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18, - 0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15, - 0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, - 0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, - 0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14, - 0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x14,0x15,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,1,2,1,1,1,2,2,1, - 2,1,2,1,2,1,1,1,1,2,1,2,2,1,2,2, - 2,2,2,2,4,4,1,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,2,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,1,2,1,2,6,6,6,1,2,0,0,0,0,0, - 0x17,0x17,0x17,0x17,0xb,0x17,0x17,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0, - 0,0,0,0,2,0,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, - 0,0,0,0,0,0,4,0x17,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,6,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, - 0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,5, - 5,5,5,5,5,5,0,5,5,5,5,5,5,5,0,5, - 5,5,5,5,5,5,0,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,0x17,0x17,0x1c,0x1d,0x1c,0x1d,0x17,0x17,0x17, - 0x1c,0x1d,0x17,0x1c,0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17, - 0x17,0x13,0x17,0x1c,0x1d,0x17,0x17,0x1c,0x1d,0x14,0x15,0x14,0x15,0x14,0x15,0x14, - 0x15,0x17,0x17,0x17,0x17,0x17,4,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,0x13,0x13,0x17,0x17,0x17,0x17,0x13,0x17,0x14,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x17,0x17,0x17,0x14,0x15,0x14,0x15, - 0x14,0x15,0x14,0x15,0x13,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, - 0xc,0x17,0x17,0x17,0x1b,4,5,0xa,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, - 0x14,0x15,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0x14,0x15,0x15, - 0x1b,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,6,6,6,6,8,8, - 0x13,4,4,4,4,4,0x1b,0x1b,0xa,0xa,0xa,4,5,0x17,0x1b,0x1b, - 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 0,0,6,6,0x1a,0x1a,4,4,5,0x13,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,0x17,4,4,4,5,0,0,0,0,0,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,0,0x1b,0x1b,0xb,0xb,0xb, - 0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, - 0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,5,5,5,5, - 5,5,5,5,5,5,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0, - 0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4, - 0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,4,0x17, - 0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,9,9,9,9,9,9,9,9,9,9,5,5,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 5,6,7,7,7,0x17,6,6,6,6,6,6,6,6,6,6, - 0x17,4,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,4,4, - 6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, - 0xa,0xa,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0, - 0,0,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4, - 4,4,0x1a,0x1a,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,4,2,2,2,2,2,2,2,2,1,2,1, - 2,1,1,2,1,2,1,2,1,2,4,0x1a,0x1a,1,2,1, - 2,5,1,2,1,2,2,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,1,1,1, - 1,2,1,1,1,1,1,2,1,2,1,2,1,2,1,2, - 1,2,1,1,1,1,2,1,2,0,0,0,0,0,1,2, - 0,2,0,2,1,2,1,2,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 4,4,4,1,2,5,4,4,2,5,5,5,5,5,6,5, - 5,5,6,5,5,5,5,6,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8, - 8,6,6,8,0x1b,0x1b,0x1b,0x1b,6,0,0,0,0xb,0xb,0xb,0xb, - 0xb,0xb,0x1b,0x1b,0x19,0x1b,0,0,0,0,0,0,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,8,8,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 8,8,8,8,8,8,8,8,8,8,8,8,6,6,0,0, - 0,0,0,0,0,0,0x17,0x17,9,9,9,9,9,9,9,9, - 9,9,0,0,0,0,0,0,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5, - 0x17,0x17,0x17,5,0x17,5,5,6,9,9,9,9,9,9,9,9, - 9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6, - 6,6,6,6,6,6,0x17,0x17,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6, - 6,6,6,8,8,0,0,0,0,0,0,0,0,0,0,0, - 0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, - 0,6,6,6,8,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,6,8,8,6,6,6,6,8,8,6,6,8, - 8,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,4, - 9,9,9,9,9,9,9,9,9,9,0,0,0,0,0x17,0x17, - 5,5,5,5,5,6,4,5,5,5,5,5,5,5,5,5, - 9,9,9,9,9,9,9,9,9,9,5,5,5,5,5,0, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,8, - 8,6,6,8,8,6,6,0,0,0,0,0,0,0,0,0, - 5,5,5,6,5,5,5,5,5,5,5,5,6,8,0,0, - 9,9,9,9,9,9,9,9,9,9,0,0,0x17,0x17,0x17,0x17, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 4,5,5,5,5,5,5,0x1b,0x1b,0x1b,5,8,6,8,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5, - 6,6,6,5,5,6,6,5,5,5,5,5,6,6,5,6, - 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,5,5,4,0x17,0x17,5,5, - 5,5,5,5,5,5,5,5,5,8,6,6,8,8,0x17,0x17, - 5,4,4,8,6,0,0,0,0,0,0,0,0,0,5,5, - 5,5,5,5,0,0,5,5,5,5,5,5,0,0,5,5, - 5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,0,5,5,5,5,5,5,5,0,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,0x1a,4,4,4,4,2,2,2, - 2,2,2,2,2,2,4,0x1a,0x1a,0,0,0,0,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 8,8,6,8,8,6,8,8,0x17,8,6,0,0,9,9,9, - 9,9,9,9,9,9,9,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, - 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,0,0,0,0,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, - 0x11,0x11,0x11,0x11,0x11,0x11,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,0,0,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0, - 0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0, - 0,0,0,5,6,5,5,5,5,5,5,5,5,5,5,0x18, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, - 5,5,5,0,5,0,5,5,0,5,5,0,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, - 0x1a,0x1a,0x1a,0x1a,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,0x15,0x14,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,0,0,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,0,0,0,0,0,0,0,0x1b,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, - 5,5,5,5,5,5,5,5,0x19,0x1b,0x1b,0x1b,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17, - 0x17,0x17,0x17,0x14,0x15,0x17,0,0,0,0,0,0,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,0x17,0x13,0x13,0x16, - 0x16,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x14, - 0x15,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0,0x17,0x17,0x17,0x17, - 0x13,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x18,0x13,0x18,0x18,0x18,0, - 0x17,0x19,0x17,0x17,0,0,0,0,5,5,5,5,5,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,0,0,0x10,0,0x17, - 0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,9,9, - 9,9,9,9,9,9,9,9,0x17,0x17,0x18,0x18,0x18,0x17,0x17,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,0x14,0x17,0x15,0x1a,0x16,0x1a,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0x14,0x15,0x17, - 0x14,0x15,0x17,0x17,5,5,5,5,5,5,5,5,5,5,4,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, - 5,5,5,5,5,5,0,0,5,5,5,5,5,5,0,0, - 5,5,5,5,5,5,0,0,5,5,5,0,0,0,0x19,0x19, - 0x18,0x1a,0x1b,0x19,0x19,0,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0,0,0, - 0,0,0,0,0,0,0,0x10,0x10,0x10,0x1b,0x1b,0,0,5,5, - 5,5,5,5,5,5,5,5,5,0,5,5,0,5,0x17,0x17, - 0x17,0,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0, - 0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xa,0xa,0xa,0xa,0xa,0xb, - 0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0x1b, - 0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 6,0,0,6,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0,0,0,0,0,0,0,0,0,5,5,5,0xa, - 5,5,5,5,5,5,5,5,0xa,0,0,0,0,0,5,5, - 5,5,5,5,6,6,6,6,6,0,0,0,0,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,0,0x17,0xa,0xa, - 0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,1,1,1, - 1,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2, - 2,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0, - 0,0,0,0,0x17,1,1,1,0,1,1,0,2,2,2,2, - 2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2, - 2,2,2,0,2,2,2,2,2,2,2,0,2,2,0,0, - 0,4,4,4,4,4,4,0,4,4,4,4,4,4,4,4, - 4,0,0,0,0,0,5,5,5,5,5,5,0,0,5,0, - 5,5,5,5,5,5,0,5,5,0,0,0,5,0,0,5, - 5,5,5,5,5,0,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5, - 5,5,5,5,5,5,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5, - 5,5,0,5,5,0,0,0,0,0,0xb,0xb,0xb,0xb,0xb,5, - 5,5,5,5,5,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0x17,5, - 5,5,5,5,5,5,5,5,5,0,0,0,0,0,0x17,5, - 5,5,5,5,5,5,5,0,0,0,0,0xb,0xb,5,5,6, - 6,6,0,6,6,0,0,0,0,0,6,6,6,6,5,5, - 5,5,5,5,0,0,6,6,6,0,0,0,0,6,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,0xb,0xb,0x17,5,5, - 5,5,5,5,5,5,5,5,5,5,5,0xb,0xb,0xb,5,5, - 5,5,5,5,5,5,0x1b,5,5,5,5,5,5,5,6,6, - 0,0,0,0,0xb,0xb,0xb,0xb,0xb,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0, - 0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,0, - 0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,0,0,0,0, - 0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,0,0,0,0,0, - 0,0,0x17,0x17,0x17,0x17,0,0,0,1,1,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0, - 0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,5,6,6,6, - 6,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5, - 5,5,5,0,6,6,0x13,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 5,0,0,0,0,0,0,0,0,6,0xb,0xb,0xb,0xb,0x17,0x17, - 0x17,0x17,0x17,0,0,0,0,0,0,5,5,6,6,6,6,0x17, - 0x17,0x17,0x17,0,0,0,0,0,0,5,5,5,5,5,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0,0,0,0,6,6,6,6,6,6,6, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0xb,0xb,0xb,0xb,0xb,0xb,9, - 9,9,9,9,9,9,9,9,9,6,5,5,6,6,5,0, - 0,0,0,0,0,0,0,0,6,8,8,8,6,6,6,6, - 8,8,6,6,0x17,0x17,0x10,0x17,0x17,6,0,0,0,0,0,0, - 0,0,0,0,0x10,0,0,5,5,5,5,5,5,5,6,6, - 6,6,6,8,6,6,6,6,6,0,9,9,9,9,9,9, - 9,9,9,9,0x17,0x17,0x17,0x17,5,8,8,5,0,0,0,0, - 0,0,0,0,5,5,5,6,0x17,0x17,5,0,0,0,0,0, - 0,0,0,0,5,5,5,8,8,8,6,6,6,6,6,6, - 6,6,6,8,5,5,5,5,0x17,0x17,0x17,0x17,6,6,6,6, - 0x17,8,6,9,9,9,9,9,9,9,9,9,9,5,0x17,5, - 0x17,0x17,0x17,0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0,0, - 0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,8, - 8,8,6,6,8,8,6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17, - 6,0,5,5,5,5,5,5,5,0,5,0,5,5,5,5, - 0,5,5,5,5,5,5,5,5,5,0x17,0,0,0,0,0, - 0,8,8,8,6,6,6,6,6,6,6,6,0,0,0,0, - 0,6,6,8,8,0,5,5,5,5,5,5,5,5,0,0, - 5,0,5,5,0,5,5,5,5,5,0,6,6,5,8,8, - 6,8,8,8,8,0,0,8,8,0,0,8,8,8,0,0, - 5,0,0,0,0,0,0,8,0,0,0,0,0,5,5,5, - 8,8,0,0,6,6,6,6,6,6,6,0,0,0,5,5, - 5,5,5,8,8,8,6,6,6,6,6,6,6,6,8,8, - 6,6,6,8,6,5,5,5,5,0x17,0x17,0x17,0x17,0x17,9,9, - 9,9,9,9,9,9,9,9,0x17,0x17,0,0x17,6,5,8,8, - 8,6,6,6,6,6,6,8,6,8,8,8,8,6,8,6, - 6,5,5,0x17,5,0,0,0,0,0,0,0,0,8,8,6, - 6,6,6,0,0,8,8,8,8,6,6,8,6,0x17,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5, - 6,6,0,0,8,8,8,6,6,6,6,6,6,6,6,8, - 8,6,8,6,0x17,0x17,0x17,5,0,0,0,0,0,0,0,0, - 0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0,0,0,5,5,5,5,5,5,5,5,5,5,5,6,8, - 6,8,8,6,6,6,6,6,6,8,6,5,0x17,0,0,0, - 0,0,0,8,8,6,6,6,6,8,6,6,6,6,6,0, - 0,0,0,9,9,9,9,9,9,9,9,9,9,0xb,0xb,0x17, - 0x17,0x17,0x1b,6,6,6,6,6,6,6,6,8,6,6,0x17,0, - 0,0,0,0xb,0xb,0xb,0,0,0,0,0,0,0,0,0,0, - 0,0,5,5,5,5,5,5,5,0,0,5,0,0,5,5, - 5,5,0,5,5,0,5,5,5,5,5,5,5,5,8,8, - 8,8,8,8,0,8,8,0,0,6,6,8,6,5,8,5, - 8,6,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,5,8, - 8,8,6,6,6,6,0,0,6,6,8,8,8,8,6,5, - 0x17,5,8,0,0,0,0,0,0,0,0,0,0,0,5,6, - 6,6,6,6,6,6,6,6,6,5,5,5,5,5,6,6, - 6,6,6,6,8,5,6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,6,0,0,0,0,0,0,0,0,5,6,6,6,6,6, - 6,8,8,6,6,6,5,5,5,5,6,6,6,6,6,6, - 6,8,6,6,0x17,0x17,0x17,5,0x17,0x17,0x17,0,0,0,0,0, - 0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0, - 6,6,6,6,6,6,8,6,5,0x17,0x17,0x17,0x17,0x17,0,0, - 0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6, - 0,8,6,6,6,6,6,6,8,6,6,8,6,6,0,0, - 0,0,0,0,0,0,0,5,6,6,6,6,6,6,0,0, - 0,6,0,6,6,0,6,6,6,6,6,6,5,6,0,0, - 0,0,0,0,0,0,5,5,5,5,5,5,0,5,5,0, - 5,5,5,5,5,5,5,5,5,5,8,8,8,8,8,0, - 6,6,0,8,8,6,8,6,5,0,0,0,0,0,0,0, - 5,5,5,6,6,8,8,0x17,0x17,0,0,0,0,0,0,0, - 0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0x17,0xa,0xa,0xa, - 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0x17,0x17,0x17, - 0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,5,0x17,0x17, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0,0,0,0,0,0,0,6,6,6, - 6,6,0x17,0,0,0,0,0,0,0,0,0,0,6,6,6, - 6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,4,4,4, - 4,0x17,0x1b,0,0,0,0,0,0,0,0,0,0,9,9,9, - 9,9,9,9,9,9,9,0,0xb,0xb,0xb,0xb,0xb,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0x17,0x17,0x17,0x17,0,0,0,0,0,5,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0, - 0,0,0,6,6,6,4,4,4,4,4,4,4,4,4,4, - 4,4,4,0x17,4,6,0,0,0,0,0,0,0,0,0,0, - 0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,4,4,4,4,0,4,4,4,4,4,4,4,0,4,4, - 0,5,5,5,5,5,5,5,5,5,5,0,0,0x1b,6,6, - 0x17,0x10,0x10,0x10,0x10,0,0,0,0,0,0,0,0,0,0,0, - 0,0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b,0x1b,8,8, - 8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6,6,0x1b,0x1b, - 6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,6,6,6,6,0x1b,0x1b,6,6,6,0x1b,0,0,0,0,0, - 0,0,0,0,0,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0, - 0,0,0,0,0,2,2,2,2,1,1,1,1,1,1,1, - 1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2, - 2,1,0,1,1,0,0,1,0,0,1,1,0,0,1,1, - 1,1,0,1,1,1,1,1,1,2,2,2,2,0,2,0, - 2,2,2,2,1,1,0,1,1,1,1,0,0,1,1,1, - 1,1,0,1,1,1,1,1,1,1,0,2,2,2,2,2, - 2,2,2,1,1,0,1,1,1,1,0,1,1,1,1,1, - 0,1,0,0,0,1,1,1,1,1,1,0,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2, - 2,2,2,2,0,0,1,1,1,1,1,1,1,1,0x18,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1, - 1,1,1,1,1,1,1,1,0x18,2,2,2,2,2,0x18,2, - 2,2,2,2,2,1,1,1,1,1,1,1,1,1,0x18,2, - 2,2,2,2,2,0x18,2,2,2,2,2,2,1,2,0,0, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6, - 6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17, - 0,0,0,0,6,6,6,6,6,6,6,6,6,0,0,6, - 6,6,6,6,0,6,6,0,6,6,6,6,6,0,0,0, - 0,0,6,6,6,6,6,6,6,4,4,4,4,4,4,4, - 0,0,9,9,9,9,9,9,9,9,9,9,0,0,0,0, - 5,0x1b,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 6,0,9,9,9,9,9,9,9,9,9,9,0,0,0,0, - 0,0x19,5,5,5,5,5,5,5,0,5,5,5,5,0,5, - 5,0,5,5,5,5,5,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,2,2,2,2,6,6,6,6,6,6,6,4,0,0, - 0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,0xb, - 0xb,0xb,0x19,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0,0,0, - 0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0x1b,0xb,0,5,5,0,5,0,0,5,0,5,5,5,5,5, - 5,5,0,5,5,5,5,0,5,0,5,0,0,0,0,5, - 0,0,0,0,5,0,5,0,5,0,5,5,5,0,5,5, - 0,5,0,0,5,0,5,0,5,0,5,0,5,5,0,5, - 0,0,5,5,5,5,0,5,5,5,5,0,5,5,5,5, - 0,5,0,5,5,5,0,5,5,5,5,5,0,5,5,5, - 5,5,0x18,0x18,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a, - 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0x1b, - 0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x10, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0 - ] -); - -pub static HEADER: CodePointTrieHeader = CodePointTrieHeader { - high_start: 0x110000, - shifted12_high_start: 0x110, - trie_type: TrieType::Fast, - index3_null_offset: 0x66a, - data_null_offset: 0xd18, - null_value: 0x0, -}; diff --git a/deps/crates/vendor/icu_collections-v2/benches/tries/gc_small.rs b/deps/crates/vendor/icu_collections-v2/benches/tries/gc_small.rs deleted file mode 100644 index da297a2d4c60..000000000000 --- a/deps/crates/vendor/icu_collections-v2/benches/tries/gc_small.rs +++ /dev/null @@ -1,865 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use icu_collections::codepointtrie::{CodePointTrieHeader, TrieType}; -use zerovec::ule::AsULE; -use zerovec::{zerovec, ZeroVec}; - -#[rustfmt::skip] -pub const INDEX: ZeroVec = zerovec!(u16; ::ULE::from_unsigned; - [ - 0,0x40,0x7f,0xbf,0xff,0x12e,0x16d,0x1ad,0x1e5,0x224,0x250,0x28e,0x2ce,0x2de,0x31e,0x34f, - 0x38c,0x3bc,0x3fa,0x43a,0x44a,0x47b,0x4b2,0x4f2,0x532,0x572,0x5a3,0x5cf,0x60f,0x644,0x65e,0x69e, - 0x6de,0x71e,0x756,0x78d,0x7ca,0x809,0x848,0x887,0x8c6,0x905,0x944,0x983,0x9c3,0xa01,0xa3f,0xa7f, - 0xabf,0xafe,0xb3e,0xb7e,0xbbe,0xbfd,0xc3d,0xc7d,0xcbc,0xcfc,0xd3b,0xd7b,0xdbb,0xdfb,0xe3b,0xe79, - 0xbbd,0xbd7,0xbe7,0xbfd,0xc1d,0xc3b,0xc58,0xc77,0xc97,0xc97,0xca4,0xcc1,0xce1,0xceb,0xceb,0xceb, - 0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb, - 0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb, - 0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xd0b,0xceb,0xceb,0xceb,0xd2b,0xd2b,0xd2b,0xd2c, - 0xd2b,0xd2b,0xd2b,0xd2c,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x7f,0x8f,0x9f,0xaf, - 0xbf,0xcf,0xdf,0xef,0xff,0x10f,0x11f,0x12f,0x12e,0x13e,0x14e,0x15e,0x16d,0x17d,0x18d,0x19d, - 0x1ad,0x1bd,0x1cd,0x1dd,0x1e5,0x1f5,0x205,0x215,0x224,0x234,0x244,0x254,0x250,0x260,0x270,0x280, - 0x28e,0x29e,0x2ae,0x2be,0x2ce,0x2de,0x2ee,0x2fe,0x2de,0x2ee,0x2fe,0x30e,0x31e,0x32e,0x33e,0x34e, - 0x34f,0x35f,0x36f,0x37f,0x38c,0x39c,0x3ac,0x3bc,0x3bc,0x3cc,0x3dc,0x3ec,0x3fa,0x40a,0x41a,0x42a, - 0x43a,0x44a,0x45a,0x46a,0x44a,0x45a,0x46a,0x47a,0x47b,0x48b,0x49b,0x4ab,0x4b2,0x4c2,0x4d2,0x4e2, - 0x4f2,0x502,0x512,0x522,0x532,0x542,0x552,0x562,0x572,0x582,0x592,0x5a2,0x5a3,0x5b3,0x5c3,0x5d3, - 0x5cf,0x5df,0x5ef,0x5ff,0x60f,0x61f,0x62f,0x63f,0x644,0x654,0x664,0x674,0x65e,0x66e,0x67e,0x68e, - 0x69e,0x6ae,0x6be,0x6ce,0x6de,0x6ee,0x6fe,0x70e,0x71e,0x72e,0x73e,0x74e,0x756,0x766,0x776,0x786, - 0x78d,0x79d,0x7ad,0x7bd,0x7ca,0x7da,0x7ea,0x7fa,0x809,0x819,0x829,0x839,0x848,0x858,0x868,0x878, - 0x887,0x897,0x8a7,0x8b7,0x8c6,0x8d6,0x8e6,0x8f6,0x905,0x915,0x925,0x935,0x944,0x954,0x964,0x974, - 0x983,0x993,0x9a3,0x9b3,0x9c3,0x9d3,0x9e3,0x9f3,0xa01,0xa11,0xa21,0xa31,0xa3f,0xa4f,0xa5f,0xa6f, - 0xa7f,0xa8f,0xa9f,0xaaf,0xabf,0xacf,0xadf,0xaef,0xafe,0xb0e,0xb1e,0xb2e,0xb3e,0xb4e,0xb5e,0xb6e, - 0xb7e,0xb8e,0xb9e,0xbae,0xbbe,0xbce,0xbde,0xbee,0xbfd,0xc0d,0xc1d,0xc2d,0xc3d,0xc4d,0xc5d,0xc6d, - 0xc7d,0xc8d,0xc9d,0xcad,0xcbc,0xccc,0xcdc,0xcec,0xcfc,0xd0c,0xd1c,0xd2c,0xd3b,0xd4b,0xd5b,0xd6b, - 0xd7b,0xd8b,0xd9b,0xdab,0xdbb,0xdcb,0xddb,0xdeb,0xdfb,0xe0b,0xe1b,0xe2b,0xe3b,0xe4b,0xe5b,0xe6b, - 0xe79,0xe89,0xe99,0xea9,0x5a3,0x5a3,0xeb9,0xec8,0xed8,0xee8,0xef7,0xf06,0xf14,0xf24,0x41,0x41, - 0xf34,0x61,0x61,0xf44,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0xf54,0xf64,0x5a3,0x5a3,0xf54,0x5a3,0x5a3,0xf5c,0xf6c,0xae1,0x5a3,0x5a3, - 0x5a3,0xf6c,0x5a3,0x5a3,0x5a3,0xf74,0xf84,0xf8d,0x5a3,0xf9d,0x41,0x41,0x41,0x41,0x41,0xfad, - 0xfbd,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0xfc0,0x5a3,0xfd0,0xfd5,0x5a3,0x5a3,0x5a3,0x5a3,0xfe5,0xff4,0x5a3,0x1004,0x5a3,0x1013,0x5a3,0x1023, - 0x864,0x1033,0x5a3,0x5a3,0x5a3,0x1043,0x1051,0x105d,0xb24,0x106d,0x107d,0xb24,0x5a3,0x5a3,0x108d,0x5a3, - 0x5a3,0x1094,0x10a4,0x5a3,0x10ab,0x5a3,0x5a3,0x5a3,0x5a3,0x10bb,0x5a3,0x50e,0x10cb,0x10db,0x10eb,0x5a3, - 0x50f,0x10fb,0x5a3,0x5a3,0x511,0x5a3,0x1093,0x110b,0x1119,0x1119,0x5a3,0x1129,0x5a3,0x5a3,0x5a3,0x1139, - 0x1149,0x1156,0xb24,0xb24,0x1166,0x1176,0x640,0xd18,0xd18,0xd18,0x7c9,0x5a3,0x5a3,0x1186,0x1194,0xed8, - 0x11a4,0x11b0,0x7cb,0x5a3,0x11c0,0x69e,0x5a3,0x5a3,0x11ce,0x11dd,0x5a3,0x5a3,0x11ed,0x11f9,0x1209,0x69e, - 0x5a3,0x1216,0x1226,0x41,0x41,0x1236,0x1246,0x1256,0x1265,0x126e,0x61,0x61,0x274,0x280,0x280,0x280, - 0x127e,0x1289,0x61,0x275,0x280,0x280,0x2ce,0x2ce,0x2ce,0x2ce,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x1299,0xff,0xff,0xff,0xff,0xff,0xff,0x12a8,0x12b8,0x12a8,0x12a8,0x12b8,0x12c8, - 0x12a8,0x12d8,0x12e8,0x12e8,0x12e8,0x12f8,0x1307,0x1317,0x1327,0x1337,0x1347,0x1357,0x1367,0x1377,0x1386,0x1394, - 0x13a4,0x13b4,0x13c4,0x13d4,0x13e4,0x13e4,0x13f3,0x1403,0x1412,0x1421,0x1431,0x1441,0x144f,0x145f,0x146f,0x147f, - 0x148f,0x148f,0x149c,0x14ac,0x14bc,0x1119,0x14cb,0x14db,0x1119,0x14e7,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb, - 0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14fb,0x1119,0x150b,0x1119,0x1119,0x1119, - 0x1119,0x1516,0x1119,0x14e0,0x14eb,0x1526,0x1119,0x152a,0x1538,0x1119,0x1119,0x1541,0xd18,0x153d,0xd18,0x147f, - 0x147f,0x147f,0x1551,0x1119,0x1119,0x1119,0x1119,0x155d,0x147f,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x1119,0x1119,0x1119,0x14c3,0x14c9,0x1119,0x1119,0x14e3,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x156d, - 0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x157d, - 0x1587,0x147f,0x1569,0x1119,0x1119,0x1597,0x14eb,0x15a1,0x14eb,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb, - 0x14eb,0x15a4,0x15ac,0x14eb,0x14eb,0x14eb,0x15b5,0x14eb,0x15c1,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb, - 0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x1119,0x1119,0x1119,0x14eb,0x15cf,0x1119,0x1119, - 0x15dc,0x1119,0x15e6,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x41,0x41,0x41,0x61,0x61,0x61,0x15f6, - 0x1605,0xff,0xff,0xff,0xff,0xff,0xff,0x1614,0x1623,0x61,0x61,0x1633,0x5a3,0x5a3,0x5a3,0x1643, - 0x1653,0x5a3,0x1663,0x86a,0x86a,0x86a,0x86a,0x2ce,0x2ce,0x1673,0x1681,0x1691,0x16a1,0x16b1,0x16c1,0xd18, - 0xd18,0x1119,0x15e2,0x1119,0x1119,0x1119,0x1119,0x1119,0x16d1,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x16e1,0xd18,0x153c,0x16f1,0x16ff,0x170f,0x171f,0x501,0x5a3,0x5a3, - 0x5a3,0x5a3,0x172f,0xfbd,0x5a3,0x5a3,0x5a3,0x5a3,0x173e,0x4fd,0x5a3,0x5a3,0x501,0x5a3,0x5a3,0x5a3, - 0x5a3,0x50e,0x174e,0x5a3,0x5a3,0x1119,0x1119,0x16d1,0x5a3,0x1119,0x1754,0x1553,0x1119,0x1764,0x147e,0x1119, - 0x1119,0x1553,0x1119,0x1119,0x147e,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1119,0x1119,0x1119,0x1119,0x5a3,0x56d,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x510,0x1119,0x1119, - 0x1119,0x1541,0x5a3,0x5a3,0x1216,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1774,0x5a3,0x1784,0xd18,0xff,0xff,0x1794,0x17a4,0xff,0x17b4,0x5a3, - 0x5a3,0x5a3,0x5a3,0x17c4,0x17d4,0x2bd,0x17e4,0x17f4,0xfd,0xff,0xff,0xff,0x1804,0x1812,0x1822,0x1828, - 0x1832,0x183e,0x184e,0xd18,0x185c,0x186a,0x5a3,0x1877,0x1887,0x5a3,0x5a3,0x5a3,0x1897,0x18a7,0x5a3,0x5a3, - 0x18b3,0x18bf,0xb24,0x2ce,0x18cf,0x69e,0x5a3,0x18df,0x5a3,0x576,0x18ef,0x5a3,0x510,0x7ca,0x5a3,0x5a3, - 0x18ff,0x190e,0x191e,0x192e,0x10f1,0x5a3,0x5a3,0x1935,0x1944,0x1954,0x1964,0x5a3,0x1974,0x5a3,0x5a3,0x5a3, - 0x1984,0x1994,0x1999,0x19a9,0x19b9,0x19c8,0x10ba,0x86a,0x61,0x61,0x19d8,0x19e8,0x61,0x61,0x61,0x61, - 0x61,0x5a3,0x5a3,0x19f8,0xb24,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd97, - 0x5a3,0x1a08,0x5a3,0x5a3,0x511,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18, - 0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18, - 0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28, - 0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28, - 0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x50f,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1093,0xd18,0xd18,0x1a38, - 0x1a45,0x1a54,0x1a5e,0x1a6e,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1a7c,0x1a89,0x4ff,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x1a99,0x1119,0x5a3,0x5a3,0x5a3,0x5a3,0x500,0x5a3,0x5a3,0x1aa9,0xd18,0xd18,0x1ab9,0x2ce,0x1ac9,0x2ce, - 0x1ad9,0x1ae5,0x1af5,0x1b04,0xae3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1b14,0x1b24,0x30,0x40, - 0x50,0x60,0x1b34,0x1b44,0x1b54,0x5a3,0x1b56,0x5a3,0x50e,0x19c7,0x1b66,0x1b76,0x1b85,0x865,0x5a3,0xae1, - 0x1b95,0x50f,0x50f,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x73e,0x1ba5,0x147f,0x147f, - 0xf96,0x148f,0x148f,0x148f,0x1bb5,0x1bbe,0x153b,0x1bcc,0xd18,0xd18,0x1119,0x1119,0x1bdc,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x510,0x5a3,0x5a3,0x5a3,0x993,0x1bec,0x1bf0,0x5a3,0x5a3,0x1bf8, - 0x5a3,0x1c07,0x5a3,0x5a3,0x1c17,0x5a3,0x1c27,0x5a3,0x5a3,0x1c37,0x1c47,0xd18,0xd18,0x41,0x41,0x342, - 0x61,0x61,0x5a3,0x5a3,0x5a3,0x5a3,0x50f,0xb24,0x41,0x41,0x1c57,0x61,0x1c5f,0x5a3,0x5a3,0x1c6f, - 0x5a3,0x5a3,0x5a3,0x1c73,0x335,0x335,0x1c83,0x1c91,0x1c9f,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x1663,0x5a3,0x10bb,0x1c6f,0xd18,0x1caf,0x280,0x280,0x1cb4,0xd18,0xd18,0xd18,0xd18,0x1cc4,0x5a3,0x5a3, - 0x1cce,0x5a3,0x1cdd,0x5a3,0x1ced,0x5a3,0x50e,0x154a,0xd18,0xd18,0xd18,0x5a3,0x1cfd,0x5a3,0x1d0d,0x5a3, - 0x1d1d,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x1d2d,0x147f,0x1d3d,0x147f,0x147f,0x1d4d,0x94e,0x5a3, - 0x1d5d,0x1bf3,0x1d6d,0x5a3,0x1d7d,0x5a3,0x1d8d,0xd18,0xd18,0x1d9d,0x5a3,0x1da8,0x1db8,0x5a3,0x5a3,0x5a3, - 0x1dc8,0x5a3,0x1dd8,0x5a3,0x1de8,0x5a3,0x1df8,0x1548,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3, - 0x5a3,0x1094,0xd18,0xd18,0xd18,0x41,0x41,0x41,0x1e08,0x61,0x61,0x61,0x1e18,0x5a3,0x5a3,0x1e28, - 0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x147f,0x1bed,0x5a3, - 0x5a3,0x1e38,0xd99,0xd18,0xd18,0xd18,0xd18,0x5a3,0x1d8d,0x1e48,0x5a3,0x577,0x1e58,0xd18,0x5a3,0x1e68, - 0xd18,0xd18,0x5a3,0x1e78,0xd18,0x5a3,0x1663,0x1e88,0x5a3,0x5a3,0x575,0x1e98,0x1d3d,0x1ea8,0x1eb8,0x7cb, - 0x5a3,0x5a3,0x1ec8,0x1ed6,0x5a3,0x1094,0xb24,0x773,0x5a3,0x1ee6,0x1ef3,0x1f03,0x5a3,0x5a3,0x1f13,0x7cb, - 0x5a3,0x5a3,0x1f23,0x1f32,0x1f42,0x1f52,0x1f5d,0x5a3,0x954,0x1f6d,0x1f7c,0xd18,0xd18,0xd18,0xd18,0x1f8c, - 0x863,0x1f9b,0x5a3,0x5a3,0x630,0x1fab,0xb24,0x1fbb,0x858,0x868,0x1fca,0x1fda,0x1fea,0x1ff8,0x141d,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x2008,0x2018,0x2028,0xd99,0xd18,0x5a3, - 0x5a3,0x5a3,0x2038,0x2047,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3, - 0x5a3,0x2057,0x2066,0x2075,0x207d,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x208d,0x209c,0xb24,0x20ac,0xd18,0x5a3, - 0x5a3,0x20bc,0x20cc,0xb24,0xd18,0xd18,0xd18,0x5a3,0xf74,0x20dc,0x20ec,0x1663,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x1f6d,0x20fc,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0x41,0x41,0x61,0x61,0xc23,0x210c,0x211b,0x2127,0x5a3,0x2137,0x2147,0xb24,0xd18,0xd18,0xd18, - 0xd18,0x2157,0x5a3,0x5a3,0x2166,0x2176,0xd18,0x2186,0x5a3,0x5a3,0x2193,0x21a2,0x21b2,0x5a3,0x5a3,0x573, - 0x21c2,0x21d0,0x5a3,0x5a3,0x5a3,0x5a3,0x1094,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x868,0x5a3,0x2057,0x21e0,0x21f0,0xc23,0xf8d,0x550,0x5a3, - 0xe2a,0x2200,0x220f,0xd18,0xd18,0xd18,0xd18,0x96e,0x5a3,0x5a3,0x221f,0x222e,0xb24,0x223e,0x5a3,0x2248, - 0x2258,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0x5a3,0x2268,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x993,0x147f,0x2278, - 0x2287,0x2295,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1093,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x148f,0x148f,0x148f,0x148f,0x148f,0x148f,0x22a5,0x22b5,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd97,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x22c5,0x5a3,0x5a3, - 0x50e,0x22d5,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3, - 0x5a3,0x5a3,0x1663,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3, - 0x5a3,0x1094,0x5a3,0x50e,0x191e,0x5a3,0x5a3,0x5a3,0x5a3,0x50e,0xb24,0x5a3,0x50f,0x22e5,0x5a3,0x5a3, - 0x5a3,0x22f5,0x2305,0x2315,0x2323,0x741,0x5a3,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x41,0x41, - 0x61,0x61,0x147f,0x2333,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0xe1d,0x2343, - 0x2344,0x2344,0x234c,0x235b,0xd18,0xd18,0xd18,0xd18,0x2369,0x2379,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1c6f,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x10bb,0xd18,0xd18,0x1094,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x2389,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd98,0xd18,0xd18, - 0xd98,0x2398,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x511,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x73e,0x510,0x1094,0x23a8,0x23b8,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x2ce,0x2ce,0x641,0x2ce,0x141b,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x16d1,0xd18, - 0xd18,0xd18,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x16e1,0x1119,0x1119,0x23c8,0x1119,0x1119,0x1119,0x23d3,0x23e0,0x23ed,0x1119,0x23f9,0x1119,0x1119,0x1119, - 0x153d,0xd18,0x1119,0x1119,0x1119,0x1119,0x2407,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0x147f,0x2417,0x1119,0x1119,0x1119,0x1119,0x1119,0x1541,0x147f,0x1bf3,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x41,0x3b2,0x61,0x2427,0x3ae,0x1c8e,0x12a8,0x41,0xdc,0x2437,0x2447,0x2455,0x1c8f,0x41, - 0x3b2,0x61,0x2462,0x246f,0x61,0x247d,0x248d,0x249c,0x24a0,0x41,0xd8,0x61,0x41,0x3b2,0x61,0x2427, - 0x3ae,0x61,0x12a8,0x41,0xdc,0x24a0,0x41,0xd8,0x61,0x41,0x3b2,0x61,0x24b0,0x41,0x24bf,0xeb, - 0x38a,0x24cf,0x61,0x24db,0x41,0x24bb,0xe7,0x24c9,0xc7,0x61,0xed,0x41,0x24e7,0x61,0x24f4,0x2502, - 0x2502,0x2502,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x1119,0x2ce,0x2ce,0x2ce,0x2512,0x2ce,0x2ce,0x251d,0x252a,0x2536,0x13f8,0x4c2,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x25a,0x2546,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xe4c,0x2556,0x2564,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x5a3,0x5a3,0x510,0x2574,0x2584,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x5a3,0x2594,0xd18,0x5a3,0x5a3,0x633,0x25a4,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x25b4,0x50e,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x25c4,0x141b,0xd18,0xd18,0x41,0x41,0xdc,0x61,0x25d4,0x191e,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x1f52,0x147f,0x147f,0x25e4,0x25f4,0xd18,0xd18, - 0xd18,0xd18,0x1f52,0x147f,0x2604,0x1bee,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xae4,0x5a3,0x2614,0x2621,0x262f,0x263f,0x264d,0x2655,0x867,0x511,0x2664,0x511,0xd18,0xd18, - 0xd18,0x2674,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x1119,0x1119,0x153c,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x16d1,0x1754,0x1118,0x1118,0x1118, - 0x1119,0x16e1,0x2684,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x153a,0xd18,0xd18,0xd18, - 0x1bd6,0x1119,0x1bca,0x1119,0x1119,0x153c,0x153f,0x1bcb,0x16e1,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x2691,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x26a1, - 0x153b,0x153b,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x16d1,0x1119,0x1119,0x1119,0x1119,0x1119,0x153f, - 0x153c,0x1bcc,0x153c,0x1119,0x1119,0x1119,0x1540,0xf9d,0x1119,0x1119,0x1540,0x1119,0x153a,0x1bcb,0xd18,0xd18, - 0xd18,0xd18,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, - 0x1119,0x1119,0x16d1,0x153a,0x26ae,0x1541,0x1119,0x153b,0x153d,0x16e1,0xf9d,0x1540,0x1541,0x1119,0x1119,0x1119, - 0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x26be,0x1119,0x1119,0x153d,0xd18,0xd18,0xb24,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd18,0xd18,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x1094,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x50f,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd99,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x993,0xd18,0x5a3,0x50f,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18, - 0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3, - 0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3, - 0x5a3,0x73e,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x26ce,0xd18,0x26de, - 0x26de,0x26de,0x26de,0x26de,0x26de,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x2ce,0x2ce,0x2ce, - 0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0xd18,0x1a28,0x1a28,0x1a28, - 0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28, - 0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x26ee,0x84,0xa4,0xc4, - 0xe4,0x104,0x124,0x144,0x164,0x184,0x1a0,0x1c0,0x1da,0x1fa,0x21a,0x23a,0x25a,0x27a,0x29a,0x2b9, - 0x2d9,0x2f9,0x319,0x339,0x359,0x379,0x399,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3bd,0x3b9,0x3b9, - 0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9, - 0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3dd,0x3b9,0x3f5,0x415,0x435,0x455,0x3b9,0x3b9,0x3b9, - 0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x475,0x495,0x495,0x495,0x495,0x4b5,0x4b5,0x4b5, - 0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4c5,0x4df,0x4fd,0x51d,0x53d,0x55d,0x57d, - 0x59d,0x5bd,0x5dd,0x5fd,0x617,0x637,0x657,0x677,0x697,0x6b7,0x6d7,0x6f7,0x712,0x3b9,0x732,0x752, - 0x767,0x767,0x767,0x767,0x76e,0x3b9,0x3b9,0x78e,0x767,0x767,0x767,0x767,0x767,0x3b9,0x7ae,0x767, - 0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x3b9, - 0x7ce,0x767,0x7ea,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x80a,0x3b9,0x3b9,0x82a,0x767, - 0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x83b, - 0x85b,0x872,0x767,0x767,0x767,0x767,0x892,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x8a2,0x8c2, - 0x8e2,0x902,0x922,0x942,0x962,0x767,0x972,0x992,0x9a9,0x767,0x9b9,0x9d9,0x767,0x9f2,0xa12,0xa32, - 0xa52,0x942,0xa72,0xa92,0xaad,0x767,0x767,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9, - 0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9, - 0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xacd,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xadd, - 0xafc,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xb12,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9, - 0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xb1d,0x767,0x767,0x767,0x767,0x767,0x767,0x3b9,0xb3d,0x767, - 0x767,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xb5d,0x767,0x767,0x767,0x767,0x767, - 0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767, - 0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0xb7d,0x767,0x767,0x767,0x767, - 0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767, - 0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5, - 0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5, - 0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0xb9d - ] -); - -#[rustfmt::skip] -pub const DATA: ZeroVec = zerovec!(u8; core::convert::identity; - [ - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17, - 9,9,9,9,9,9,9,9,9,9,0x17,0x17,0x18,0x18,0x18,0x17, - 0x17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,0x14,0x17,0x15,0x1a,0x16, - 0x1a,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0xf, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc, - 0x17,0x19,0x19,0x19,0x19,0x1b,0x17,0x1a,0x1b,5,0x1c,0x18,0x10,0x1b,0x1a,0x1b, - 0x18,0xb,0xb,0x1a,2,0x17,0x17,0x1a,0xb,5,0x1d,0xb,0xb,0xb,0x17,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,0x18,1,1,1,1,1,1,1,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,0x18,2,2,2,2,2,2,2,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,1,2,1,2,1,2,2,1,1, - 2,1,2,1,1,2,1,1,1,2,2,1,1,1,1,2, - 1,1,2,1,1,1,2,2,2,1,1,2,1,1,2,1, - 2,1,2,1,1,2,1,2,2,1,2,1,1,2,1,1, - 1,2,1,2,1,1,2,2,5,1,2,2,2,5,5,5, - 5,1,3,2,1,3,2,1,3,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,3, - 2,1,2,1,1,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,2,2,2,2,2,2,1, - 1,2,1,1,2,1,2,1,1,1,1,2,1,2,1,2, - 1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,5,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,4,4,4, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4, - 4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,0x1a,4,0x1a,0x1a,0x1a, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,2, - 1,2,4,0x1a,1,2,0,0,4,2,2,2,0x17,1,0,0, - 0,0,0x1a,0x1a,1,0x17,1,1,1,0,1,0,1,1,2,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2, - 2,1,1,1,2,2,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2, - 2,2,2,1,2,0x18,1,2,1,1,2,2,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,0x1b,6,6,6, - 6,6,7,7,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,0,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,0,0,4,0x17,0x17,0x17,0x17,0x17,0x17,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,0x17,0x13,0,0,0x1b, - 0x1b,0x19,0,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 0x13,6,0x17,6,6,0x17,6,6,0x17,6,0,0,0,0,0,0, - 0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, - 0,5,5,5,5,0x17,0x17,0,0,0,0,0,0,0,0,0, - 0,0,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18,0x18,0x17,0x17,0x19,0x17,0x17, - 0x1b,0x1b,6,6,6,6,6,6,6,6,6,6,6,0x17,0x10,0x17, - 0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,4,5,5,5,5,5,5,5,5,5,5,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,9,9,9,9,9,9,9,9,9,9,0x17,0x17,0x17,0x17, - 5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,0x17,5,6,6,6,6,6,6,6,0x10,0x1b,6,6, - 6,6,6,6,4,4,6,6,0x1b,6,6,6,6,5,5,9, - 9,9,9,9,9,9,9,9,9,5,5,5,0x1b,0x1b,5,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0x10,5, - 6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0, - 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,5, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9, - 9,9,9,9,9,9,9,9,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6, - 6,6,4,4,0x1b,0x17,0x17,0x17,4,0,0,6,0x19,0x19,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,6,6,6,6,4,6,6,6,6,6,6,6, - 6,6,4,6,6,6,4,6,6,6,6,6,0,0,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,6,6,6,0,0,0x17,0,5,5, - 5,5,5,5,5,5,5,5,5,0,0,0,0,0,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1a,5, - 5,5,5,5,5,0,0x10,0x10,0,0,0,0,0,0,6,6, - 6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0x10, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,8,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,6,8,6,5,8,8,6,6,6,6,6,6, - 6,6,8,8,8,8,6,8,8,5,6,6,6,6,6,6, - 6,5,5,5,5,5,5,5,5,5,5,6,6,0x17,0x17,9, - 9,9,9,9,9,9,9,9,9,0x17,4,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,6,8,8,0,5,5,5, - 5,5,5,5,5,0,0,5,5,0,0,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0,5,5,5,5,5,5,5,0,5,0,0,0,5,5, - 5,5,0,0,6,5,8,8,6,6,6,6,0,0,8,8, - 0,0,8,8,6,5,0,0,0,0,0,0,0,0,8,0, - 0,0,0,5,5,0,5,5,5,6,6,0,0,9,9,9, - 9,9,9,9,9,9,9,5,5,0x19,0x19,0xb,0xb,0xb,0xb,0xb, - 0xb,0x1b,0x19,5,0x17,6,0,6,6,8,0,5,5,5,5,5, - 5,0,0,0,0,5,5,0,0,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, - 5,5,5,5,5,5,5,0,5,5,0,5,5,0,5,5, - 0,0,6,0,8,8,6,6,0,0,0,0,6,6,0,0, - 6,6,6,0,0,0,6,0,0,0,0,0,0,0,5,5, - 5,5,0,5,0,0,0,0,0,0,0,9,9,9,9,9, - 9,9,9,9,9,6,6,5,5,5,6,0x17,0,0,0,0, - 0,0,0,0,0,6,6,8,0,5,5,5,5,5,5,5, - 5,5,0,5,5,5,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, - 5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0, - 6,5,8,8,6,6,6,6,6,0,6,6,8,0,8,8, - 6,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,5,5,6,6,0,0,9,9,9,9,9,9,9, - 9,9,9,0x17,0x19,0,0,0,0,0,0,0,5,6,6,6, - 6,6,6,0,6,8,8,0,5,5,5,5,5,5,5,5, - 0,0,5,5,0,0,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5, - 5,5,5,5,0,5,5,0,5,5,5,5,5,0,0,6, - 5,8,6,6,6,6,0,0,8,8,0,0,8,8,6,0, - 0,0,0,0,0,0,6,6,8,0,0,0,0,5,5,0, - 5,5,5,6,6,0,0,9,9,9,9,9,9,9,9,9, - 9,0x1b,5,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0, - 0,6,5,0,5,5,5,5,5,5,0,0,0,5,5,5, - 0,5,5,5,5,0,0,0,5,5,0,5,0,5,5,0, - 0,0,5,5,0,0,0,5,5,5,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,0,0,0,0,8,8,6, - 8,8,0,0,0,8,8,8,0,8,8,8,6,0,0,5, - 0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,0xb, - 0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0,0,0,0,0,6, - 8,8,8,6,5,5,5,5,5,5,5,5,0,5,5,5, - 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,0,0,6,5,6,6,8, - 8,8,8,0,6,6,6,0,6,6,6,6,0,0,0,0, - 0,0,0,6,6,0,5,5,5,0,0,5,0,0,5,5, - 6,6,0,0,9,9,9,9,9,9,9,9,9,9,0,0, - 0,0,0,0,0,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,5,6, - 8,8,0x17,5,5,5,5,5,5,5,5,0,5,5,5,0, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5, - 5,5,0,5,5,5,5,5,0,0,6,5,8,6,8,8, - 8,8,8,0,6,8,8,0,8,8,6,6,0,0,0,0, - 0,0,0,8,8,0,0,0,0,0,0,5,5,0,5,5, - 6,6,0,0,9,9,9,9,9,9,9,9,9,9,0,5, - 5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6, - 8,8,5,5,5,5,5,5,5,5,5,0,5,5,5,0, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,6,6,5,8,8,6,6, - 6,6,0,8,8,8,0,8,8,8,6,5,0x1b,0,0,0, - 0,5,5,5,8,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,6, - 6,0,0,9,9,9,9,9,9,9,9,9,9,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0x1b,5,5,5,5,5,5,0,6,8, - 8,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, - 5,5,5,5,5,5,5,5,5,0,5,0,0,5,5,5, - 5,5,5,5,0,0,0,6,0,0,0,0,8,8,8,6, - 6,6,0,6,0,8,8,8,8,8,8,8,8,0,0,0, - 0,0,0,9,9,9,9,9,9,9,9,9,9,0,0,8, - 8,0x17,0,0,0,0,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5, - 6,6,6,6,6,6,6,0,0,0,0,0x19,5,5,5,5, - 5,5,4,6,6,6,6,6,6,6,6,0x17,9,9,9,9, - 9,9,9,9,9,9,0x17,0x17,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5, - 0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, - 5,0,5,5,5,5,5,5,5,5,5,5,6,5,5,6, - 6,6,6,6,6,6,6,6,5,0,0,5,5,5,5,5, - 0,4,0,6,6,6,6,6,6,0,0,9,9,9,9,9, - 9,9,9,9,9,0,0,5,5,5,5,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,5,0x1b,0x1b,0x1b,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x17, - 0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,9,9,9,9,9, - 9,9,9,9,9,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b, - 6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8,5,5,5,5,5, - 5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,0,0,0,0,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,8,6,6,6,6,6, - 0x17,6,6,5,5,5,5,5,6,6,6,6,6,6,6,6, - 6,6,6,0,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b, - 0x1b,0x1b,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5, - 5,5,5,5,8,8,6,6,6,8,6,6,6,6,6,6, - 8,6,6,8,8,6,6,5,9,9,9,9,9,9,9,9, - 9,9,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,8,8, - 6,6,5,5,5,5,6,6,5,8,8,8,5,5,8,8, - 8,8,8,8,8,5,5,6,6,6,6,5,5,5,5,5, - 5,5,5,5,5,5,6,8,8,6,6,8,8,8,8,8, - 8,6,5,8,9,9,9,9,9,9,9,9,9,9,8,8, - 8,6,0x1b,0x1b,1,1,1,1,1,1,0,1,0,0,0,0, - 0,1,0,0,2,2,2,2,2,2,2,2,2,2,2,0x17, - 4,2,2,2,5,5,5,5,5,5,5,5,5,0,5,5, - 5,5,0,0,5,5,5,5,5,5,5,0,5,0,5,5, - 5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,0, - 0,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,1,1,1, - 1,1,1,0,0,2,2,2,2,2,2,0,0,0x13,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,0x1b,0x17,5, - 0xc,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 0x14,0x15,0,0,0,5,5,5,5,5,5,5,5,5,5,5, - 0x17,0x17,0x17,0xa,0xa,5,5,5,5,5,5,5,5,0,0,0, - 0,0,0,0,5,5,6,6,6,8,0,0,0,0,0,0, - 0,0,0,5,5,6,6,8,0x17,0x17,0,0,0,0,0,0, - 0,0,0,5,5,6,6,0,0,0,0,0,0,0,0,0, - 0,0,0,5,0,6,6,0,0,0,0,0,0,0,0,0, - 0,0,0,5,5,5,5,6,6,8,6,6,6,6,6,6, - 6,8,8,8,8,8,8,6,8,8,6,6,6,6,6,6, - 6,0x17,0x17,0x17,4,0x17,0x17,0x17,0x19,5,6,0,0,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0x17,0x17,0x17, - 0x17,0x17,0x17,0x13,0x17,0x17,0x17,0x17,6,6,6,0x10,6,5,5,5, - 4,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, - 0,0,0,0,5,5,5,5,5,6,6,5,5,5,5,5, - 5,5,5,5,6,5,0,0,0,0,0,5,5,5,5,5, - 5,0,0,0,0,0,0,0,0,0,0,6,6,6,8,8, - 8,8,6,6,8,8,8,0,0,0,0,8,8,6,8,8, - 8,8,8,8,6,6,6,0,0,0,0,0x1b,0,0,0,0x17, - 0x17,9,9,9,9,9,9,9,9,9,9,5,5,5,5,5, - 0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9, - 9,9,9,9,9,0xb,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5,5,5,5, - 6,6,8,8,6,0,0,0x17,0x17,5,5,5,5,5,8,6, - 8,6,6,6,6,6,6,6,0,6,8,6,8,8,6,6, - 6,6,6,6,6,6,8,8,8,6,6,6,6,6,6,6, - 6,6,6,0,0,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,4,0x17,0x17, - 0x17,0x17,0x17,0x17,0,0,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,7,6,5,5,5,5,6,8,6,6,6,6, - 6,8,6,8,8,8,6,8,8,5,5,5,5,5,5,5, - 5,0,0,0,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6, - 6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0, - 5,8,6,6,6,6,8,8,6,6,8,6,6,6,5,5, - 5,5,5,5,6,8,6,6,8,8,8,6,8,6,6,8, - 8,0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,5,5,5, - 5,8,8,8,8,8,8,8,8,6,6,6,6,8,8,6, - 6,0,0,0,0x17,0x17,0x17,0x17,0x17,9,9,9,9,9,9,9, - 9,9,9,0,0,0,5,5,5,5,5,5,5,5,4,4, - 4,4,4,4,0x17,0x17,2,2,2,2,2,2,2,2,2,0, - 0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1, - 1,0,0,1,1,1,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0, - 0,0,0,0,0,0,6,6,6,0x17,6,6,6,6,6,6, - 6,6,6,6,6,6,8,6,6,6,6,6,6,6,5,5, - 5,5,6,5,5,8,6,6,5,0,0,0,0,0,4,4, - 4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2, - 2,4,2,2,2,2,2,2,2,1,2,1,2,1,2,2, - 2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2, - 1,1,1,1,1,1,1,1,2,2,2,2,2,2,0,0, - 1,1,1,1,1,1,0,0,2,2,2,2,2,2,2,2, - 0,1,0,1,0,1,0,1,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,2,2,2,2,2,0,2,2, - 1,1,1,1,3,0x1a,2,0x1a,0x1a,2,2,2,0,2,2,1, - 1,1,1,3,0x1a,0x1a,0x1a,2,2,2,2,0,0,2,2,1, - 1,1,1,0,0x1a,0x1a,0x1a,2,2,2,2,2,2,2,2,1, - 1,1,1,1,0x1a,0x1a,0x1a,0,0,2,2,2,0,2,2,1, - 1,1,1,3,0x1a,0x1a,0,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, - 0xc,0xc,0x10,0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c, - 0x1d,0x14,0x1c,0x1c,0x1d,0x14,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd, - 0xe,0x10,0x10,0x10,0x10,0x10,0xc,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x1c,0x1d,0x17,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,0x17,0x17,0xc,0x10,0x10,0x10,0x10,0x10,0,0x10,0x10,0x10,0x10,0x10,0x10, - 0x10,0x10,0x10,0x10,0xb,4,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18, - 0x18,0x14,0x15,4,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18, - 0x18,0x14,0x15,0,4,4,4,4,4,4,4,4,4,4,4,4, - 4,0,0,0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, - 0x19,0x19,0x19,0x19,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6, - 7,7,7,6,7,7,7,6,6,6,6,6,6,6,6,6, - 6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0x1b,0x1b,1,0x1b,0x1b,0x1b,0x1b,1,0x1b,0x1b,2,1,1,1,2, - 2,1,1,1,2,0x1b,1,0x1b,0x1b,0x18,1,1,1,1,1,0x1b, - 0x1b,0x1b,0x1b,1,0x1b,1,0x1b,1,0x1b,1,1,1,1,0x1b,2,1, - 1,1,1,2,5,5,5,5,2,0x1b,0x1b,2,2,1,1,0x18, - 0x18,0x18,0x18,0x18,1,2,2,2,2,0x1b,0x18,0x1b,0x1b,2,0x1b,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xa, - 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,1, - 2,0xa,0xa,0xa,0xa,0xb,0x1b,0x1b,0,0,0,0,0x18,0x18,0x18,0x18, - 0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x18, - 0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x18,0x1b,0x18, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, - 0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14, - 0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14, - 0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18, - 0x18,0x18,0x18,0x18,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b, - 0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1,2,1,1,1,2,2,1,2,1, - 2,1,2,1,1,1,2,1,2,2,1,2,2,2,2,2, - 2,4,4,1,1,2,1,2,2,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1, - 2,1,2,6,6,1,2,0,0,0,0,0,0x17,0x17,0x17,0x17, - 0xb,0x17,0x17,2,2,2,2,2,2,0,2,0,0,0,0,0, - 2,0,0,5,5,5,5,5,5,5,5,0,0,0,0,0, - 0,0,4,0x17,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,6,5,5,5,5,5,5,5,0,0,0,0,0,0, - 0,0,0,0x17,0x17,0x1c,0x1d,0x1c,0x1d,0x17,0x17,0x17,0x1c,0x1d,0x17,0x1c, - 0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,0x17,0x13,0x17,0x1c,0x1d,0x17, - 0x17,0x1c,0x1d,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x17,0x17, - 4,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x13,0x17,0x17,0x17, - 0x17,0x13,0x17,0x14,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,0x1b,0x1b,0x17,0x17,0x17,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0, - 0,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0, - 0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0, - 0,0xc,0x17,0x17,0x17,0x1b,4,5,0xa,0x14,0x15,0x14,0x15,0x14,0x15,0x14, - 0x15,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0x14,0x15,0x15,0x1b, - 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,6,6,6,6,8,8,0x13, - 4,4,4,4,4,0x1b,0x1b,0xa,0xa,0xa,4,5,0x17,0x1b,0x1b,5, - 5,5,5,5,5,5,0,0,6,6,0x1a,0x1a,4,4,5,5, - 5,5,5,5,5,5,5,5,5,0x17,4,4,4,5,0x1b,0x1b, - 0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,5,5,5,5,5,5,5,5,5,5,5,5, - 4,0x17,0x17,0x17,9,9,9,9,9,9,9,9,9,9,5,5, - 0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,5,6,7,7,7,0x17,6,6,6,6,6,6,6,6, - 6,6,0x17,4,1,2,1,2,1,2,1,2,1,2,1,2, - 4,4,6,6,5,5,5,5,5,5,0xa,0xa,0xa,0xa,0xa,0xa, - 0xa,0xa,0xa,0xa,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0, - 0,0,0,0,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4, - 4,4,4,4,0x1a,0x1a,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,4,2,2,2,2,2,2,2,2,1,2,1, - 2,1,1,2,1,2,1,2,1,2,4,0x1a,0x1a,1,2,1, - 2,5,1,2,1,2,2,2,1,2,1,2,1,2,1,2, - 1,2,1,1,1,1,1,2,1,2,1,2,1,2,1,2, - 1,2,1,1,1,1,2,1,2,0,0,0,0,0,1,2, - 0,2,0,2,1,2,1,2,0,0,0,0,0,0,4,4, - 4,1,2,5,4,4,2,5,5,5,5,5,6,5,5,5, - 6,5,5,5,5,6,5,5,5,5,8,8,6,6,8,0x1b, - 0x1b,0x1b,0x1b,6,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x19, - 0x1b,0,0,0,0,0,0,5,5,5,5,0x17,0x17,0x17,0x17,0, - 0,0,0,0,0,0,0,8,8,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,8,8,8,8,8,8,8,8,8, - 8,8,8,6,6,0,0,0,0,0,0,0,0,0x17,0x17,6, - 6,5,5,5,5,5,5,0x17,0x17,0x17,5,0x17,5,5,6,5, - 5,5,5,5,5,6,6,6,6,6,6,6,6,0x17,0x17,6, - 6,8,8,0,0,0,0,0,0,0,0,0,0,0,0x17,5, - 5,5,6,8,8,6,6,6,6,8,8,6,6,8,8,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,4,9,9, - 9,9,9,9,9,9,9,9,0,0,0,0,0x17,0x17,5,5, - 5,5,5,6,4,5,5,5,5,5,5,5,5,5,6,6, - 6,6,6,6,8,6,6,8,8,6,6,0,0,0,0,0, - 0,0,0,0,5,5,5,6,5,5,5,5,5,5,5,5, - 6,8,0,0,9,9,9,9,9,9,9,9,9,9,0,0, - 0x17,0x17,0x17,0x17,4,5,5,5,5,5,5,0x1b,0x1b,0x1b,5,8, - 6,8,5,5,6,5,6,6,6,5,5,6,6,5,5,5, - 5,5,6,6,5,6,5,0,0,0,0,0,0,0,0,0, - 0,0,0,0,5,5,4,0x17,0x17,5,5,5,5,5,5,5, - 5,5,5,5,8,6,6,8,8,0x17,0x17,5,4,4,8,6, - 0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0, - 0,5,5,5,5,5,5,0,2,2,2,2,2,2,2,2, - 2,2,2,0x1a,4,4,4,4,2,2,2,2,2,2,2,2, - 2,4,0x1a,0x1a,0,0,0,0,5,5,5,8,8,6,8,8, - 6,8,8,0x17,8,6,0,0,5,5,5,5,5,5,5,0, - 0,0,0,5,5,5,5,5,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,2,2,2,2,2,2,2,0, - 0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0, - 0,0,5,6,5,5,5,5,5,5,5,5,5,0x18,5,5, - 5,5,5,5,5,0,5,5,5,5,5,0,5,0,5,5, - 0,5,5,0,5,5,5,5,5,5,5,5,5,5,0x1a,0x1a, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0,0,0,0, - 0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,0x15,0x14,5,5,5,5,5,5,5, - 5,0,0,0,0,0,0,0,0x1b,5,5,5,5,5,5,5, - 5,5,5,5,5,0x19,0x1b,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x14,0x15,0x17,0,0,0,0,0,0,0x17,0x13,0x13,0x16,0x16,0x14,0x15, - 0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x14,0x15,0x17,0x17, - 0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0,0x17,0x17,0x17,0x17,0x13,0x14,0x15, - 0x14,0x15,0x14,0x15,0x17,0x17,0x18,0x13,0x18,0x18,0x18,0,0x17,0x19,0x17,0x17, - 0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0,0,0x10,0,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18, - 0x17,0x13,0x17,0x17,2,2,2,2,2,2,2,2,2,2,2,0x14, - 0x18,0x15,0x18,0x14,0x15,0x17,0x14,0x15,0x17,0x17,5,5,5,5,5,5, - 5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,4,4,0,0,5,5,5,5,5,5,0,0, - 5,5,5,0,0,0,0x19,0x19,0x18,0x1a,0x1b,0x19,0x19,0,0x1b,0x18, - 0x18,0x18,0x18,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0x10,0x10, - 0x10,0x1b,0x1b,0,0,5,5,5,5,5,5,5,5,5,5,5, - 0,5,5,0,5,0x17,0x17,0x17,0,0,0,0,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xa,0xa,0xa,0xa,0xa,0xb,0xb,0xb,0xb,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0x1b,0x1b,0x1b,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0,0,6,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0, - 0,0,0,0,0,5,5,5,0xa,5,5,5,5,5,5,5, - 5,0xa,0,0,0,0,0,5,5,5,5,5,5,6,6,6, - 6,6,0,0,0,0,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,0,0x17,5,5,5,5,0,0,0,0,5, - 5,5,5,5,5,5,5,0x17,0xa,0xa,0xa,0xa,0xa,0,0,0, - 0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,2, - 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,5, - 5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0, - 0,0,0x17,1,1,1,0,1,1,0,2,2,2,2,2,2, - 2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2, - 2,0,2,2,2,2,2,2,2,0,2,2,0,0,0,4, - 4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,0, - 0,0,0,0,5,5,5,5,5,5,0,0,5,0,5,5, - 5,5,5,5,0,5,5,0,0,0,5,0,0,5,5,5, - 5,5,5,0,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5, - 5,5,5,5,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5, - 0,5,5,0,0,0,0,0,0xb,0xb,0xb,0xb,0xb,5,5,5, - 5,5,5,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0x17,5,5,5, - 5,5,5,5,5,5,5,0,0,0,0,0,0x17,5,5,5, - 5,5,5,5,5,0,0,0,0,0xb,0xb,5,5,0,0,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,6,6, - 6,0,6,6,0,0,0,0,0,6,6,6,6,5,5,5, - 5,5,5,0,0,6,6,6,0,0,0,0,6,0x17,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,5,0xb,0xb,0x17,5,5,5, - 5,5,5,5,5,5,5,5,5,5,0xb,0xb,0xb,5,5,5, - 5,5,5,5,5,0x1b,5,5,5,5,5,5,5,6,6,0, - 0,0,0,0xb,0xb,0xb,0xb,0xb,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0, - 0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0, - 0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,0,0, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,0,0,0,0,0, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,0,0,0,0,0,0, - 0,0x17,0x17,0x17,0x17,0,0,0,1,1,1,0,0,0,0,0, - 0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0, - 0,0,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,5,6,6,6,6, - 0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, - 5,5,0,6,6,0x13,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5, - 0,0,0,0,0,0,0,0,6,0xb,0xb,0xb,0xb,0x17,0x17,0x17, - 0x17,0x17,0,0,0,0,0,0,5,5,6,6,6,6,0x17,0x17, - 0x17,0x17,0,0,0,0,0,0,5,5,5,5,5,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0,0,0,0,8,6,8,5,5,5,5,5, - 5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0,0,0xb,0xb,0xb,0xb,0xb,0xb,9,9, - 9,9,9,9,9,9,9,9,6,5,5,6,6,5,0,0, - 0,0,0,0,0,0,0,6,8,8,8,6,6,6,6,8, - 8,6,6,0x17,0x17,0x10,0x17,0x17,6,0,0,0,0,0,0,0, - 0,0,0,0x10,0,0,5,5,5,5,5,5,5,6,6,6, - 6,6,8,6,6,6,6,6,0,9,9,9,9,9,9,9, - 9,9,9,0x17,0x17,0x17,0x17,5,8,8,5,0,0,0,0,0, - 0,0,0,5,5,5,6,0x17,0x17,5,0,0,0,0,0,0, - 0,0,0,5,5,5,8,8,8,6,6,6,6,6,6,6, - 6,6,8,5,5,5,5,0x17,0x17,0x17,0x17,6,6,6,6,0x17, - 8,6,9,9,9,9,9,9,9,9,9,9,5,0x17,5,0x17, - 0x17,0x17,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0,0,0,0,0,0,0,0,0,0,0,5,5,5, - 5,5,5,5,5,5,5,5,5,8,8,8,6,6,8,8, - 6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,6,0,5,5,5,5, - 5,5,5,0,5,0,5,5,5,5,0,5,5,5,5,5, - 5,5,5,5,0x17,0,0,0,0,0,0,8,8,8,6,6, - 6,6,6,6,6,6,0,0,0,0,0,6,6,8,8,0, - 5,5,5,5,5,5,5,5,0,0,5,0,5,5,0,5, - 5,5,5,5,0,6,6,5,8,8,6,8,8,8,8,0, - 0,8,8,0,0,8,8,8,0,0,5,0,0,0,0,0, - 0,8,0,0,0,0,0,5,5,5,8,8,0,0,6,6, - 6,6,6,6,6,0,0,0,5,5,5,5,5,8,8,8, - 6,6,6,6,6,6,6,6,8,8,6,6,6,8,6,5, - 5,5,5,0x17,0x17,0x17,0x17,0x17,9,9,9,9,9,9,9,9, - 9,9,0x17,0x17,0,0x17,6,5,8,8,8,6,6,6,6,6, - 6,8,6,8,8,8,8,6,8,6,6,5,5,0x17,5,0, - 0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,8,8,6,6,6,6,0,0,8,8, - 8,8,6,6,8,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,5,5,5,5,6,6,0,0,8,8,8, - 6,6,6,6,6,6,6,6,8,8,6,8,6,0x17,0x17,0x17, - 5,0,0,0,0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,5,5,5,5, - 5,5,5,5,5,5,5,6,8,6,8,8,6,6,6,6, - 6,6,8,6,5,0x17,0,0,0,0,0,0,8,8,6,6, - 6,6,8,6,6,6,6,6,0,0,0,0,9,9,9,9, - 9,9,9,9,9,9,0xb,0xb,0x17,0x17,0x17,0x1b,6,6,6,6, - 6,6,6,6,8,6,6,0x17,0,0,0,0,0xb,0xb,0xb,0, - 0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5, - 5,5,0,0,5,0,0,5,5,5,5,0,5,5,0,5, - 5,5,5,5,5,5,5,8,8,8,8,8,8,0,8,8, - 0,0,6,6,8,6,5,8,5,8,6,0x17,0x17,0x17,0,0, - 0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0, - 0,5,5,5,5,5,5,8,8,8,6,6,6,6,0,0, - 6,6,8,8,8,8,6,5,0x17,5,8,0,0,0,0,0, - 0,0,0,0,0,0,5,6,6,6,6,6,6,6,6,6, - 6,5,5,5,5,5,6,6,6,6,6,6,8,5,6,6, - 6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,6,0,0,0,0,0,0, - 0,0,5,6,6,6,6,6,6,8,8,6,6,6,5,5, - 5,5,6,6,6,6,6,6,6,8,6,6,0x17,0x17,0x17,5, - 0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0,0, - 6,6,6,6,6,6,6,0,6,6,6,6,6,6,8,6, - 5,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0, - 6,6,6,6,6,6,6,6,0,8,6,6,6,6,6,6, - 8,6,6,8,6,6,0,0,0,0,0,0,0,0,0,5, - 6,6,6,6,6,6,0,0,0,6,0,6,6,0,6,6, - 6,6,6,6,5,6,0,0,0,0,0,0,0,0,5,5, - 5,5,5,5,0,5,5,0,5,5,5,5,5,5,5,5, - 5,5,8,8,8,8,8,0,6,6,0,8,8,6,8,6, - 5,0,0,0,0,0,0,0,5,5,5,6,6,8,8,0x17, - 0x17,0,0,0,0,0,0,0,0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0x17,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, - 0xa,0xa,0xa,0xa,0,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0, - 0,0,0,0,0,5,0x17,0x17,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0,0, - 0,0,0,0,0,6,6,6,6,6,0x17,0,0,0,0,0, - 0,0,0,0,0,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17, - 0x17,0x1b,0x1b,0x1b,0x1b,4,4,4,4,0x17,0x1b,0,0,0,0,0, - 0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,0, - 0xb,0xb,0xb,0xb,0xb,0,5,5,5,5,5,5,5,5,5,5, - 5,5,5,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x17,0x17,0x17,0x17,0,0, - 0,0,0,5,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,0,0,0,0,0,0,0,6,6,6,4,4, - 4,4,4,4,4,4,4,4,4,4,4,0x17,4,6,0,0, - 0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,4,4,4,4,0,4,4, - 4,4,4,4,4,0,4,4,0,0,0,0,5,5,5,5, - 0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, - 5,5,0,0,0x1b,6,6,0x17,0x10,0x10,0x10,0x10,0,0,0,0, - 0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, - 0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b,0x1b, - 8,8,8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6,6, - 0x1b,0x1b,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1b,0x1b,0x1b,6,6,6,6,0x1b,0x1b,6,6,6,0x1b,0,0,0, - 0,0,0,0,0,0,0,0xb,0xb,0xb,0xb,0,0,0,0,0, - 0,0,0,0,0,0,0,2,2,2,2,1,1,1,1,1, - 1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2, - 2,2,2,1,0,1,1,0,0,1,0,0,1,1,0,0, - 1,1,1,1,0,1,1,1,1,1,1,2,2,2,2,0, - 2,0,2,2,2,2,1,1,0,1,1,1,1,0,0,1, - 1,1,1,1,0,1,1,1,1,1,1,1,0,2,2,2, - 2,2,2,2,2,1,1,0,1,1,1,1,0,1,1,1, - 1,1,0,1,0,0,0,1,1,1,1,1,1,0,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, - 2,2,2,2,2,2,0,0,1,1,1,1,1,1,1,1, - 0x18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1, - 1,1,1,1,1,1,1,1,1,1,0x18,2,2,2,2,2, - 0x18,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1, - 0x18,2,2,2,2,2,2,0x18,2,2,2,2,2,2,1,2, - 0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,6,6,6, - 6,6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,6, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x17,0x17,0x17, - 0x17,0x17,0,0,0,0,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,0,6,6,6,6,6,6,6,6,6,0, - 0,6,6,6,6,6,0,6,6,0,6,6,6,6,6,0, - 0,0,0,0,6,6,6,6,6,6,6,4,4,4,4,4, - 4,4,0,0,9,9,9,9,9,9,9,9,9,9,0,0, - 0,0,5,0x1b,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,6,0,9,9,9,9,9,9,9,9,9,9,0,0, - 0,0,0,0x19,5,5,5,5,5,5,5,0,5,5,5,5, - 0,5,5,0,5,5,5,5,5,0,0,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,2,2,2,2,6,6,6,6,6,6,6,4, - 0,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0x1b,0xb,0xb,0xb,0x19,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0, - 0,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0x1b,0xb,0,5,5,0,5,0,0,5,0,5,5,5, - 5,5,5,5,0,5,5,5,5,0,5,0,5,0,0,0, - 0,5,0,0,0,0,5,0,5,0,5,0,5,5,5,0, - 5,5,0,5,0,0,5,0,5,0,5,0,5,0,5,5, - 0,5,0,0,5,5,5,5,0,5,5,5,5,0,5,5, - 5,5,0,5,0,5,5,5,0,5,5,5,5,5,0,5, - 5,5,5,5,0x18,0x18,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a, - 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0x1b,0x1b, - 0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b, - 0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x10, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0,0,0 - ] -); - -pub static HEADER: CodePointTrieHeader = CodePointTrieHeader { - high_start: 0x110000, - shifted12_high_start: 0x110, - trie_type: TrieType::Small, - index3_null_offset: 0x767, - data_null_offset: 0xd18, - null_value: 0x0, -}; diff --git a/deps/crates/vendor/icu_collections-v2/benches/tries/mod.rs b/deps/crates/vendor/icu_collections-v2/benches/tries/mod.rs deleted file mode 100644 index 576516da5e4f..000000000000 --- a/deps/crates/vendor/icu_collections-v2/benches/tries/mod.rs +++ /dev/null @@ -1,6 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -pub mod gc_fast; -pub mod gc_small; diff --git a/deps/crates/vendor/icu_collections-v2/src/char16trie/mod.rs b/deps/crates/vendor/icu_collections-v2/src/char16trie/mod.rs deleted file mode 100644 index 1a4b66b9471c..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/char16trie/mod.rs +++ /dev/null @@ -1,44 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! This module provides a data structure for a space-efficient and time-efficient lookup of -//! sequences of 16-bit units (commonly but not necessarily UTF-16 code units) -//! which map to integer values. -//! -//! It is an implementation of the existing [ICU4C UCharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UCharsTrie.html) -//! / [ICU4J CharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/util/CharsTrie.html) API. -//! -//! ## Architecture -//! -//! ICU4X [`Char16Trie`] is designed to provide a read-only view of `UCharsTrie` data that is exported from ICU4C. -//! -//! ## Examples -//! -//! ### Querying a `Char16Trie` -//! -//! ```rust -//! use icu::collections::char16trie::{Char16Trie, TrieResult}; -//! use zerovec::ZeroVec; -//! -//! // A Char16Trie containing the ASCII characters mapping 'a' to 1 and 'ab' -//! // to 100. -//! let trie_data = [48, 97, 176, 98, 32868]; -//! let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(&trie_data)); -//! -//! let mut iter = trie.iter(); -//! let res = iter.next('a'); -//! assert_eq!(res, TrieResult::Intermediate(1)); -//! let res = iter.next('b'); -//! assert_eq!(res, TrieResult::FinalValue(100)); -//! let res = iter.next('c'); -//! assert_eq!(res, TrieResult::NoMatch); -//! ``` -//! -//! [`ICU4X`]: ../icu/index.html - -mod trie; - -pub use trie::Char16Trie; -pub use trie::Char16TrieIterator; -pub use trie::TrieResult; diff --git a/deps/crates/vendor/icu_collections-v2/src/char16trie/trie.rs b/deps/crates/vendor/icu_collections-v2/src/char16trie/trie.rs deleted file mode 100644 index 668a0ca84bbd..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/char16trie/trie.rs +++ /dev/null @@ -1,495 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use zerofrom::ZeroFrom; -use zerovec::{ZeroSlice, ZeroVec}; - -// Match-node lead unit values, after masking off intermediate-value bits: - -// 00..0f: Branch node. If node!=0 then the length is node+1, otherwise -// the length is one more than the next byte. - -// For a branch sub-node with at most this many entries, we drop down -// to a linear search. -const MAX_BRANCH_LINEAR_SUB_NODE_LENGTH: usize = 5; - -// 0030..003f: Linear-match node, match 1..16 units and continue reading the next node. -const MIN_LINEAR_MATCH: u16 = 0x30; -const MAX_LINEAR_MATCH_LENGTH: u16 = 0x10; - -// Match-node lead unit bits 14..6 for the optional intermediate value. -// If these bits are 0, then there is no intermediate value. -// Otherwise, see the *NodeValue* constants below. -const MIN_VALUE_LEAD: u16 = MIN_LINEAR_MATCH + MAX_LINEAR_MATCH_LENGTH; // 0x40 -const NODE_TYPE_MASK: u16 = MIN_VALUE_LEAD - 1; // 0x003f - -// A final-value node has bit 15 set. -const VALUE_IS_FINAL: u16 = 0x8000; - -// Compact value: After testing bit 0, shift right by 15 and then use the following thresholds. -const MAX_ONE_UNIT_VALUE: u16 = 0x3fff; - -const MIN_TWO_UNIT_VALUE_LEAD: u16 = MAX_ONE_UNIT_VALUE + 1; // 0x4000 - -const MAX_ONE_UNIT_NODE_VALUE: u16 = 0xff; - -const MIN_TWO_UNIT_NODE_VALUE_LEAD: u16 = MIN_VALUE_LEAD + ((MAX_ONE_UNIT_NODE_VALUE + 1) << 6); // 0x4040 - -const THREE_UNIT_NODE_VALUE_LEAD: u16 = 0x7fc0; - -const THREE_UNIT_VALUE_LEAD: u16 = 0x7fff; - -// Compact delta integers. -const MAX_ONE_UNIT_DELTA: u16 = 0xfbff; -const MIN_TWO_UNIT_DELTA_LEAD: u16 = MAX_ONE_UNIT_DELTA + 1; // 0xfc00 -const THREE_UNIT_DELTA_LEAD: u16 = 0xffff; - -fn skip_value(pos: usize, lead: u16) -> usize { - if lead < MIN_TWO_UNIT_VALUE_LEAD { - pos - } else if lead < THREE_UNIT_VALUE_LEAD { - pos + 1 - } else { - pos + 2 - } -} - -fn skip_node_value(pos: usize, lead: u16) -> usize { - if lead < MIN_TWO_UNIT_NODE_VALUE_LEAD { - pos - } else if lead < THREE_UNIT_NODE_VALUE_LEAD { - pos + 1 - } else { - pos + 2 - } -} - -/// This struct represents a de-serialized `Char16Trie` that was exported from -/// ICU binary data. -/// -/// Light-weight, non-const reader class for a `CharsTrie`. Traverses a -/// char-serialized data structure with minimal state, for mapping 16-bit-unit -/// sequences to non-negative integer values. -/// -/// For more information: -/// - [ICU4C UCharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UCharsTrie.html) -/// - [ICU4J CharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/util/CharsTrie.html) API. -#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] -#[cfg_attr(feature = "databake", derive(databake::Bake))] -#[cfg_attr(feature = "databake", databake(path = icu_collections::char16trie))] -#[derive(Clone, Debug, PartialEq, Eq, ZeroFrom)] -#[allow(clippy::exhaustive_structs)] // effectively exhaustive, struct-constructible for baking -pub struct Char16Trie<'data> { - /// An array of u16 containing the trie data. - #[cfg_attr(feature = "serde", serde(borrow))] - #[doc(hidden)] // #2417 - pub data: ZeroVec<'data, u16>, -} - -impl<'data> Char16Trie<'data> { - /// Returns a new [`Char16Trie`] with ownership of the provided data. - #[inline] - pub fn new(data: ZeroVec<'data, u16>) -> Self { - Self { data } - } - - /// Returns a new [`Char16TrieIterator`] backed by borrowed data from the `trie` data - #[inline] - pub fn iter(&self) -> Char16TrieIterator<'_> { - Char16TrieIterator::new(&self.data) - } -} - -/// This struct represents an iterator over a [`Char16Trie`]. -#[derive(Clone, Debug)] -pub struct Char16TrieIterator<'a> { - /// A reference to the [`Char16Trie`] data to iterate over. - trie: &'a ZeroSlice, - /// Index of next trie unit to read, or `None` if there are no more matches. - pos: Option, - /// Remaining length of a linear-match node, minus 1, or `None` if not in - /// such a node. - remaining_match_length: Option, -} - -/// An enum representing the return value from a lookup in [`Char16Trie`]. -#[derive(Clone, Copy, Debug, PartialEq)] -#[allow(clippy::exhaustive_enums)] -pub enum TrieResult { - /// The input unit(s) did not continue a matching string. - /// Once `next()` returns `TrieResult::NoMatch`, all further calls to `next()` - /// will also return `TrieResult::NoMatch`. - NoMatch, - /// The input unit(s) matched a string but there is no value for the string - /// so far. (It is a prefix of a longer string.) - NoValue, - /// The input unit(s) continued a matching string and there is a value for - /// the string so far. No further input byte/unit can continue a matching - /// string. - FinalValue(i32), - /// The input unit(s) continued a matching string and there is a value for - /// the string so far. Another input byte/unit can continue a matching - /// string. - Intermediate(i32), -} - -// Get the lead surrogate (0xd800..0xdbff) for a -// supplementary code point (0x10000..0x10ffff). -// @param supplementary 32-bit code point (U+10000..U+10ffff) -// @return lead surrogate (U+d800..U+dbff) for supplementary -fn u16_lead(supplementary: i32) -> u16 { - (((supplementary) >> 10) + 0xd7c0) as u16 -} - -// Get the trail surrogate (0xdc00..0xdfff) for a -// supplementary code point (0x10000..0x10ffff). -// @param supplementary 32-bit code point (U+10000..U+10ffff) -// @return trail surrogate (U+dc00..U+dfff) for supplementary -fn u16_tail(supplementary: i32) -> u16 { - (((supplementary) & 0x3ff) | 0xdc00) as u16 -} - -/// A macro that takes an `Option` argument and either unwraps it if it has a value or -/// causes the function to return `TrieResult::NoMatch` if there is no value. -/// This could perhaps be done with `std::ops::Try` once stabilized. -macro_rules! trie_unwrap { - ($option:expr) => { - match $option { - Some(x) => x, - None => { - // Unexpected - debug_assert!(false); - return TrieResult::NoMatch; - } - } - }; -} - -impl<'a> Char16TrieIterator<'a> { - /// Returns a new [`Char16TrieIterator`] backed by borrowed data for the `trie` array - #[inline] - pub fn new(trie: &'a ZeroSlice) -> Self { - Self { - trie, - pos: Some(0), - remaining_match_length: None, - } - } - - /// Traverses the trie from the current state for this input char. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::char16trie::{Char16Trie, TrieResult}; - /// use zerovec::ZeroVec; - /// - /// // A Char16Trie containing the ASCII characters 'a' and 'b'. - /// let trie_data = [48, 97, 176, 98, 32868]; - /// let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(&trie_data)); - /// - /// let mut iter = trie.iter(); - /// let res = iter.next('a'); - /// assert_eq!(res, TrieResult::Intermediate(1)); - /// let res = iter.next('b'); - /// assert_eq!(res, TrieResult::FinalValue(100)); - /// let res = iter.next('c'); - /// assert_eq!(res, TrieResult::NoMatch); - /// ``` - pub fn next(&mut self, c: char) -> TrieResult { - if (c as u32) <= 0xffff { - self.next16(c as u16) - } else { - match self.next16(u16_lead(c as i32)) { - TrieResult::NoValue | TrieResult::Intermediate(_) => { - self.next16(u16_tail(c as i32)) - } - _ => TrieResult::NoMatch, - } - } - } - - /// Traverses the trie from the current state for this input char. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::char16trie::{Char16Trie, TrieResult}; - /// use zerovec::ZeroVec; - /// - /// // A Char16Trie containing the ASCII characters 'a' and 'b'. - /// let trie_data = [48, 97, 176, 98, 32868]; - /// let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(&trie_data)); - /// - /// let mut iter = trie.iter(); - /// let res = iter.next('a'); - /// assert_eq!(res, TrieResult::Intermediate(1)); - /// let res = iter.next('b'); - /// assert_eq!(res, TrieResult::FinalValue(100)); - /// let res = iter.next('c'); - /// assert_eq!(res, TrieResult::NoMatch); - /// ``` - pub fn next32(&mut self, c: u32) -> TrieResult { - if c <= 0xffff { - self.next16(c as u16) - } else { - match self.next16(u16_lead(c as i32)) { - TrieResult::NoValue | TrieResult::Intermediate(_) => { - self.next16(u16_tail(c as i32)) - } - _ => TrieResult::NoMatch, - } - } - } - - /// Traverses the trie from the current state for this input char. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::char16trie::{Char16Trie, TrieResult}; - /// use zerovec::ZeroVec; - /// - /// // A Char16Trie containing the ASCII characters 'a' and 'b'. - /// let trie_data = [48, 97, 176, 98, 32868]; - /// let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(&trie_data)); - /// - /// let mut iter = trie.iter(); - /// let res = iter.next16('a' as u16); - /// assert_eq!(res, TrieResult::Intermediate(1)); - /// let res = iter.next16('b' as u16); - /// assert_eq!(res, TrieResult::FinalValue(100)); - /// let res = iter.next16('c' as u16); - /// assert_eq!(res, TrieResult::NoMatch); - /// ``` - pub fn next16(&mut self, c: u16) -> TrieResult { - let mut pos = match self.pos { - Some(p) => p, - None => return TrieResult::NoMatch, - }; - if let Some(length) = self.remaining_match_length { - // Remaining part of a linear-match node - if c == trie_unwrap!(self.trie.get(pos)) { - pos += 1; - self.pos = Some(pos); - if length == 0 { - self.remaining_match_length = None; - let node = trie_unwrap!(self.trie.get(pos)); - if node >= MIN_VALUE_LEAD { - return self.value_result(pos); - } - } else { - self.remaining_match_length = Some(length - 1); - } - return TrieResult::NoValue; - } - self.stop(); - TrieResult::NoMatch - } else { - self.next_impl(pos, c) - } - } - - fn branch_next(&mut self, pos: usize, length: usize, in_unit: u16) -> TrieResult { - let mut pos = pos; - let mut length = length; - if length == 0 { - length = trie_unwrap!(self.trie.get(pos)) as usize; - pos += 1; - } - length += 1; - - // The length of the branch is the number of units to select from. - // The data structure encodes a binary search. - while length > MAX_BRANCH_LINEAR_SUB_NODE_LENGTH { - if in_unit < trie_unwrap!(self.trie.get(pos)) { - length >>= 1; - pos = trie_unwrap!(self.jump_by_delta(pos + 1)); - } else { - length = length - (length >> 1); - pos = trie_unwrap!(self.skip_delta(pos + 1)); - } - } - // Drop down to linear search for the last few bytes. - // length>=2 because the loop body above sees length>kMaxBranchLinearSubNodeLength>=3 - // and divides length by 2. - loop { - if in_unit == trie_unwrap!(self.trie.get(pos)) { - pos += 1; - let mut node = trie_unwrap!(self.trie.get(pos)); - if node & VALUE_IS_FINAL != 0 { - self.pos = Some(pos); - return self.value_result(pos); - } - // Use the non-final value as the jump delta. - pos += 1; - - if node < MIN_TWO_UNIT_VALUE_LEAD { - pos += node as usize; - } else if node < THREE_UNIT_VALUE_LEAD { - pos += (((node - MIN_TWO_UNIT_VALUE_LEAD) as u32) << 16) as usize - | trie_unwrap!(self.trie.get(pos)) as usize; - pos += 1; - } else { - pos += ((trie_unwrap!(self.trie.get(pos)) as usize) << 16) - | trie_unwrap!(self.trie.get(pos + 1)) as usize; - pos += 2; - } - node = trie_unwrap!(self.trie.get(pos)); - self.pos = Some(pos); - - if node >= MIN_VALUE_LEAD { - return self.value_result(pos); - } - return TrieResult::NoValue; - } - length -= 1; - pos = trie_unwrap!(self.skip_value(pos + 1)); - if length <= 1 { - break; - } - } - - if in_unit == trie_unwrap!(self.trie.get(pos)) { - pos += 1; - self.pos = Some(pos); - let node = trie_unwrap!(self.trie.get(pos)); - if node >= MIN_VALUE_LEAD { - return self.value_result(pos); - } - TrieResult::NoValue - } else { - self.stop(); - TrieResult::NoMatch - } - } - - fn next_impl(&mut self, pos: usize, in_unit: u16) -> TrieResult { - let mut node = trie_unwrap!(self.trie.get(pos)); - let mut pos = pos + 1; - loop { - if node < MIN_LINEAR_MATCH { - return self.branch_next(pos, node as usize, in_unit); - } else if node < MIN_VALUE_LEAD { - // Match the first of length+1 units. - let length = node - MIN_LINEAR_MATCH; - if in_unit == trie_unwrap!(self.trie.get(pos)) { - pos += 1; - if length == 0 { - self.remaining_match_length = None; - self.pos = Some(pos); - node = trie_unwrap!(self.trie.get(pos)); - if node >= MIN_VALUE_LEAD { - return self.value_result(pos); - } - return TrieResult::NoValue; - } - self.remaining_match_length = Some(length as usize - 1); - self.pos = Some(pos); - return TrieResult::NoValue; - } - // No match - break; - } else if (node & VALUE_IS_FINAL) != 0 { - // No further matching units. - break; - } else { - // Skip intermediate value. - pos = skip_node_value(pos, node); - node &= NODE_TYPE_MASK; - } - } - self.stop(); - TrieResult::NoMatch - } - - fn stop(&mut self) { - self.pos = None; - } - - #[inline(always)] // 1 call site and we want the Option to go away - fn jump_by_delta(&self, pos: usize) -> Option { - let delta = self.trie.get(pos)?; - let v = if delta < MIN_TWO_UNIT_DELTA_LEAD { - // nothing to do - pos + 1 + delta as usize - } else if delta == THREE_UNIT_DELTA_LEAD { - let delta = - ((self.trie.get(pos + 1)? as usize) << 16) | (self.trie.get(pos + 2)? as usize); - pos + delta + 3 - } else { - let delta = (((delta - MIN_TWO_UNIT_DELTA_LEAD) as usize) << 16) - | (self.trie.get(pos + 1)? as usize); - pos + delta + 2 - }; - Some(v) - } - - #[inline(always)] // 1 call site and we want the Option to go away - fn skip_value(&self, pos: usize) -> Option { - let lead_unit = self.trie.get(pos)?; - Some(skip_value(pos + 1, lead_unit & 0x7fff)) - } - - #[inline(always)] // 1 call site and we want the Option to go away - fn skip_delta(&self, pos: usize) -> Option { - let delta = self.trie.get(pos)?; - let v = if delta < MIN_TWO_UNIT_DELTA_LEAD { - pos + 1 - } else if delta == THREE_UNIT_DELTA_LEAD { - pos + 3 - } else { - pos + 2 - }; - Some(v) - } - - fn value_result(&self, pos: usize) -> TrieResult { - match self.get_value(pos) { - Some(result) => result, - None => { - // Unexpected - debug_assert!(false); - TrieResult::NoMatch - } - } - } - - #[inline(always)] // 1 call site and we want the Option to go away - fn get_value(&self, pos: usize) -> Option { - let lead_unit = self.trie.get(pos)?; - if lead_unit & VALUE_IS_FINAL == VALUE_IS_FINAL { - self.read_value(pos + 1, lead_unit & 0x7fff) - .map(TrieResult::FinalValue) - } else { - self.read_node_value(pos + 1, lead_unit) - .map(TrieResult::Intermediate) - } - } - - #[inline(always)] // 1 call site and we want the Option to go away - fn read_value(&self, pos: usize, lead_unit: u16) -> Option { - let v = if lead_unit < MIN_TWO_UNIT_VALUE_LEAD { - lead_unit.into() - } else if lead_unit < THREE_UNIT_VALUE_LEAD { - (((lead_unit - MIN_TWO_UNIT_VALUE_LEAD) as i32) << 16) | self.trie.get(pos)? as i32 - } else { - ((self.trie.get(pos)? as i32) << 16) | self.trie.get(pos + 1)? as i32 - }; - Some(v) - } - - #[inline(always)] // 1 call site and we want the Option to go away - fn read_node_value(&self, pos: usize, lead_unit: u16) -> Option { - let v = if lead_unit < (MIN_TWO_UNIT_NODE_VALUE_LEAD) { - ((lead_unit >> 6) - 1).into() - } else if lead_unit < THREE_UNIT_NODE_VALUE_LEAD { - ((((lead_unit & 0x7fc0) - MIN_TWO_UNIT_NODE_VALUE_LEAD) as i32) << 10) - | self.trie.get(pos)? as i32 - } else { - ((self.trie.get(pos)? as i32) << 16) | self.trie.get(pos + 1)? as i32 - }; - Some(v) - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/builder.rs b/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/builder.rs deleted file mode 100644 index d24f9f66ac83..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/builder.rs +++ /dev/null @@ -1,986 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use alloc::vec; -use alloc::vec::Vec; -use core::{char, cmp::Ordering, ops::RangeBounds}; -use potential_utf::PotentialCodePoint; - -use crate::codepointinvlist::{utils::deconstruct_range, CodePointInversionList}; -use zerovec::{ule::AsULE, ZeroVec}; - -/// A builder for [`CodePointInversionList`]. -/// -/// Provides exposure to builder functions and conversion to [`CodePointInversionList`] -#[derive(Default, Clone, Debug)] -pub struct CodePointInversionListBuilder { - // A sorted list of even length, with values <= char::MAX + 1 - intervals: Vec, -} - -impl CodePointInversionListBuilder { - /// Returns empty [`CodePointInversionListBuilder`] - pub const fn new() -> Self { - Self { intervals: vec![] } - } - - /// Returns a [`CodePointInversionList`] and consumes the [`CodePointInversionListBuilder`] - pub fn build(self) -> CodePointInversionList<'static> { - let inv_list: ZeroVec = self - .intervals - .into_iter() - .map(PotentialCodePoint::from_u24) - .collect(); - #[expect(clippy::unwrap_used)] // by invariant - CodePointInversionList::try_from_inversion_list(inv_list).unwrap() - } - - /// Abstraction for adding/removing a range from start..end - /// - /// If add is true add, else remove - fn add_remove_middle(&mut self, start: u32, end: u32, add: bool) { - if start >= end || end > char::MAX as u32 + 1 { - return; - } - let start_res = self.intervals.binary_search(&start); - let end_res = self.intervals.binary_search(&end); - let mut start_ind = start_res.unwrap_or_else(|x| x); - let mut end_ind = end_res.unwrap_or_else(|x| x); - let start_pos_check = (start_ind % 2 == 0) == add; - let end_pos_check = (end_ind % 2 == 0) == add; - let start_eq_end = start_ind == end_ind; - - #[expect(clippy::indexing_slicing)] // all indices are binary search results - if start_eq_end && start_pos_check && end_res.is_err() { - self.intervals.splice(start_ind..end_ind, [start, end]); - } else { - if start_pos_check { - self.intervals[start_ind] = start; - start_ind += 1; - } - if end_pos_check { - if end_res.is_ok() { - end_ind += 1; - } else { - end_ind -= 1; - self.intervals[end_ind] = end; - } - } - if start_ind < end_ind { - self.intervals.drain(start_ind..end_ind); - } - } - } - - /// Add the range to the [`CodePointInversionListBuilder`] - /// - /// Accomplishes this through binary search for the start and end indices and merges intervals - /// in between with inplace memory. Performs `O(1)` operation if adding to end of list, and `O(N)` otherwise, - /// where `N` is the number of endpoints. - fn add(&mut self, start: u32, end: u32) { - if start >= end { - return; - } - if self.intervals.is_empty() { - self.intervals.extend_from_slice(&[start, end]); - return; - } - self.add_remove_middle(start, end, true); - } - - /// Add the character to the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_char('a'); - /// let check = builder.build(); - /// assert_eq!(check.iter_chars().next(), Some('a')); - /// ``` - pub fn add_char(&mut self, c: char) { - let to_add = c as u32; - self.add(to_add, to_add + 1); - } - - /// Add the code point value to the [`CodePointInversionListBuilder`] - /// - /// Note: Even though [`u32`] and [`prim@char`] in Rust are non-negative 4-byte - /// values, there is an important difference. A [`u32`] can take values up to - /// a very large integer value, while a [`prim@char`] in Rust is defined to be in - /// the range from 0 to the maximum valid Unicode Scalar Value. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add32(0x41); - /// let check = builder.build(); - /// assert!(check.contains32(0x41)); - /// ``` - pub fn add32(&mut self, c: u32) { - if c <= char::MAX as u32 { - // we already know 0 <= c because c: u32 - self.add(c, c + 1); - } - } - - /// Add the range of characters to the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_range('A'..='Z'); - /// let check = builder.build(); - /// assert_eq!(check.iter_chars().next(), Some('A')); - /// ``` - pub fn add_range(&mut self, range: impl RangeBounds) { - let (start, end) = deconstruct_range(range); - self.add(start, end); - } - - /// Add the range of characters, represented as u32, to the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_range32(0xd800..=0xdfff); - /// let check = builder.build(); - /// assert!(check.contains32(0xd900)); - /// ``` - pub fn add_range32(&mut self, range: impl RangeBounds) { - let (start, end) = deconstruct_range(range); - // Sets that include char::MAX need to allow an end value of MAX + 1 - if start <= end && end <= char::MAX as u32 + 1 { - self.add(start, end); - } - } - - /// Add the [`CodePointInversionList`] reference to the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::{ - /// CodePointInversionList, CodePointInversionListBuilder, - /// }; - /// let mut builder = CodePointInversionListBuilder::new(); - /// let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[ - /// 0x41, 0x4C, - /// ]) - /// .unwrap(); - /// builder.add_set(&set); - /// let check = builder.build(); - /// assert_eq!(check.iter_chars().next(), Some('A')); - /// ``` - #[allow(unused_assignments)] - pub fn add_set(&mut self, set: &CodePointInversionList) { - #[expect(clippy::indexing_slicing)] // chunks - set.as_inversion_list() - .as_ule_slice() - .chunks(2) - .for_each(|pair| { - self.add( - u32::from(PotentialCodePoint::from_unaligned(pair[0])), - u32::from(PotentialCodePoint::from_unaligned(pair[1])), - ) - }); - } - - /// Removes the range from the [`CodePointInversionListBuilder`] - /// - /// Performs binary search to find start and end affected intervals, then removes in an `O(N)` fashion - /// where `N` is the number of endpoints, with in-place memory. - fn remove(&mut self, start: u32, end: u32) { - if start >= end || self.intervals.is_empty() { - return; - } - if let Some(&last) = self.intervals.last() { - #[expect(clippy::indexing_slicing)] - // by invariant, if we have a last we have a (different) first - if start <= self.intervals[0] && end >= last { - self.intervals.clear(); - } else { - self.add_remove_middle(start, end, false); - } - } - } - - /// Remove the character from the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_range('A'..='Z'); - /// builder.remove_char('A'); - /// let check = builder.build(); - /// assert_eq!(check.iter_chars().next(), Some('B')); - pub fn remove_char(&mut self, c: char) { - self.remove32(c as u32) - } - - /// See [`Self::remove_char`] - pub fn remove32(&mut self, c: u32) { - self.remove(c, c + 1); - } - - /// Remove the range of characters from the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_range('A'..='Z'); - /// builder.remove_range('A'..='C'); - /// let check = builder.build(); - /// assert_eq!(check.iter_chars().next(), Some('D')); - pub fn remove_range(&mut self, range: impl RangeBounds) { - let (start, end) = deconstruct_range(range); - self.remove(start, end); - } - - /// See [`Self::remove_range`] - pub fn remove_range32(&mut self, range: impl RangeBounds) { - let (start, end) = deconstruct_range(range); - self.remove(start, end); - } - - /// Remove the [`CodePointInversionList`] from the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::{CodePointInversionList, CodePointInversionListBuilder}; - /// let mut builder = CodePointInversionListBuilder::new(); - /// let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[0x41, 0x46]).unwrap(); - /// builder.add_range('A'..='Z'); - /// builder.remove_set(&set); // removes 'A'..='E' - /// let check = builder.build(); - /// assert_eq!(check.iter_chars().next(), Some('F')); - #[expect(clippy::indexing_slicing)] // chunks - pub fn remove_set(&mut self, set: &CodePointInversionList) { - set.as_inversion_list() - .as_ule_slice() - .chunks(2) - .for_each(|pair| { - self.remove( - u32::from(PotentialCodePoint::from_unaligned(pair[0])), - u32::from(PotentialCodePoint::from_unaligned(pair[1])), - ) - }); - } - - /// Retain the specified character in the [`CodePointInversionListBuilder`] if it exists - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_range('A'..='Z'); - /// builder.retain_char('A'); - /// let set = builder.build(); - /// let mut check = set.iter_chars(); - /// assert_eq!(check.next(), Some('A')); - /// assert_eq!(check.next(), None); - /// ``` - pub fn retain_char(&mut self, c: char) { - self.retain32(c as u32) - } - - /// See [`Self::retain_char`] - pub fn retain32(&mut self, c: u32) { - self.remove(0, c); - self.remove(c + 1, (char::MAX as u32) + 1); - } - - /// Retain the range of characters located within the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_range('A'..='Z'); - /// builder.retain_range('A'..='B'); - /// let set = builder.build(); - /// let mut check = set.iter_chars(); - /// assert_eq!(check.next(), Some('A')); - /// assert_eq!(check.next(), Some('B')); - /// assert_eq!(check.next(), None); - /// ``` - pub fn retain_range(&mut self, range: impl RangeBounds) { - let (start, end) = deconstruct_range(range); - self.remove(0, start); - self.remove(end, (char::MAX as u32) + 1); - } - - /// See [`Self::retain_range`] - pub fn retain_range32(&mut self, range: impl RangeBounds) { - let (start, end) = deconstruct_range(range); - self.remove(0, start); - self.remove(end, (char::MAX as u32) + 1); - } - - /// Retain the elements in the specified set within the [`CodePointInversionListBuilder`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::{ - /// CodePointInversionList, CodePointInversionListBuilder, - /// }; - /// let mut builder = CodePointInversionListBuilder::new(); - /// let set = - /// CodePointInversionList::try_from_u32_inversion_list_slice(&[65, 70]) - /// .unwrap(); - /// builder.add_range('A'..='Z'); - /// builder.retain_set(&set); // retains 'A'..='E' - /// let check = builder.build(); - /// assert!(check.contains('A')); - /// assert!(!check.contains('G')); - /// ``` - #[expect(clippy::indexing_slicing)] // chunks - pub fn retain_set(&mut self, set: &CodePointInversionList) { - let mut prev = 0; - for pair in set.as_inversion_list().as_ule_slice().chunks(2) { - let range_start = u32::from(PotentialCodePoint::from_unaligned(pair[0])); - let range_limit = u32::from(PotentialCodePoint::from_unaligned(pair[1])); - self.remove(prev, range_start); - prev = range_limit; - } - self.remove(prev, (char::MAX as u32) + 1); - } - - /// Computes the complement of the argument, adding any elements that do not yet exist in the builder, - /// and removing any elements that already exist in the builder. See public functions for examples. - /// - /// Performs in `O(B + S)`, where `B` is the number of endpoints in the Builder, and `S` is the number - /// of endpoints in the argument. - fn complement_list(&mut self, set_iter: impl IntoIterator) { - let mut res: Vec = vec![]; // not the biggest fan of having to allocate new memory - let mut ai = self.intervals.iter(); - let mut bi = set_iter.into_iter(); - let mut a = ai.next(); - let mut b = bi.next(); - while let (Some(c), Some(d)) = (a, b) { - match c.cmp(&d) { - Ordering::Less => { - res.push(*c); - a = ai.next(); - } - Ordering::Greater => { - res.push(d); - b = bi.next(); - } - Ordering::Equal => { - a = ai.next(); - b = bi.next(); - } - } - } - if let Some(c) = a { - res.push(*c) - } - if let Some(d) = b { - res.push(d) - } - res.extend(ai); - res.extend(bi); - self.intervals = res; - } - - /// Computes the complement of the builder, inverting the builder (any elements in the builder are removed, - /// while any elements not in the builder are added) - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::{ - /// CodePointInversionList, CodePointInversionListBuilder, - /// }; - /// let mut builder = CodePointInversionListBuilder::new(); - /// let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[ - /// 0x0, - /// 0x41, - /// 0x46, - /// (std::char::MAX as u32) + 1, - /// ]) - /// .unwrap(); - /// builder.add_set(&set); - /// builder.complement(); - /// let check = builder.build(); - /// assert_eq!(check.iter_chars().next(), Some('A')); - /// ``` - pub fn complement(&mut self) { - if !self.intervals.is_empty() { - #[expect(clippy::indexing_slicing)] // by invariant - if self.intervals[0] == 0 { - self.intervals.drain(0..1); - } else { - self.intervals.insert(0, 0); - } - if self.intervals.last() == Some(&(char::MAX as u32 + 1)) { - self.intervals.pop(); - } else { - self.intervals.push(char::MAX as u32 + 1); - } - } else { - self.intervals - .extend_from_slice(&[0, (char::MAX as u32 + 1)]); - } - } - - /// Complements the character in the builder, adding it if not in the builder, and removing it otherwise. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_range('A'..='D'); - /// builder.complement_char('A'); - /// builder.complement_char('E'); - /// let check = builder.build(); - /// assert!(check.contains('E')); - /// assert!(!check.contains('A')); - /// ``` - pub fn complement_char(&mut self, c: char) { - self.complement32(c as u32); - } - - /// See [`Self::complement_char`] - pub fn complement32(&mut self, c: u32) { - self.complement_list([c, c + 1]); - } - - /// Complements the range in the builder, adding any elements in the range if not in the builder, and - /// removing them otherwise. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// builder.add_range('A'..='D'); - /// builder.complement_range('C'..='F'); - /// let check = builder.build(); - /// assert!(check.contains('F')); - /// assert!(!check.contains('C')); - /// ``` - pub fn complement_range(&mut self, range: impl RangeBounds) { - let (start, end) = deconstruct_range(range); - self.complement_list([start, end]); - } - - /// See [`Self::complement_range`] - pub fn complement_range32(&mut self, range: impl RangeBounds) { - let (start, end) = deconstruct_range(range); - self.complement_list([start, end]); - } - - /// Complements the set in the builder, adding any elements in the set if not in the builder, and - /// removing them otherwise. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::{ - /// CodePointInversionList, CodePointInversionListBuilder, - /// }; - /// let mut builder = CodePointInversionListBuilder::new(); - /// let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[ - /// 0x41, 0x46, 0x4B, 0x5A, - /// ]) - /// .unwrap(); - /// builder.add_range('C'..='N'); // 67 - 78 - /// builder.complement_set(&set); - /// let check = builder.build(); - /// assert!(check.contains('Q')); // 81 - /// assert!(!check.contains('N')); // 78 - /// ``` - pub fn complement_set(&mut self, set: &CodePointInversionList) { - let inv_list_iter_owned = set.as_inversion_list().iter().map(u32::from); - self.complement_list(inv_list_iter_owned); - } - - /// Returns whether the build is empty. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionListBuilder; - /// let mut builder = CodePointInversionListBuilder::new(); - /// let check = builder.build(); - /// assert!(check.is_empty()); - /// ``` - pub fn is_empty(&self) -> bool { - self.intervals.is_empty() - } -} - -#[cfg(test)] -mod tests { - use super::{CodePointInversionList, CodePointInversionListBuilder}; - use core::char; - - fn generate_tester(ex: &[u32]) -> CodePointInversionListBuilder { - let check = CodePointInversionList::try_from_u32_inversion_list_slice(ex).unwrap(); - let mut builder = CodePointInversionListBuilder::new(); - builder.add_set(&check); - builder - } - - #[test] - fn test_new() { - let ex = CodePointInversionListBuilder::new(); - assert!(ex.intervals.is_empty()); - } - - #[test] - fn test_build() { - let mut builder = CodePointInversionListBuilder::new(); - builder.add(0x41, 0x42); - let check: CodePointInversionList = builder.build(); - assert_eq!(check.iter_chars().next(), Some('A')); - } - - #[test] - fn test_empty_build() { - let builder = CodePointInversionListBuilder::new(); - let check: CodePointInversionList = builder.build(); - assert!(check.is_empty()); - } - - #[test] - fn test_add_to_empty() { - let mut builder = CodePointInversionListBuilder::new(); - builder.add(0x0, 0xA); - assert_eq!(builder.intervals, [0x0, 0xA]); - } - - #[test] - fn test_add_invalid() { - let mut builder = CodePointInversionListBuilder::new(); - builder.add(0x0, 0x0); - builder.add(0x5, 0x0); - assert!(builder.intervals.is_empty()); - } - - #[test] - fn test_add_to_start() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x0, 0x5); - let expected = [0x0, 0x5, 0xA, 0x14, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_start_overlap() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x0, 0xE); - let expected = [0x0, 0x14, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_end() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x3C, 0x46); - let expected = [0xA, 0x14, 0x28, 0x32, 60, 70]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_end_overlap() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x2B, 0x46); - let expected = [0xA, 0x14, 0x28, 0x46]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_middle_no_overlap() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x19, 0x1B); - let expected = [0xA, 0x14, 0x19, 0x1B, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_middle_inside() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0xA, 0x14); - let expected = [0xA, 0x14, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_middle_left_overlap() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0xF, 0x19); - let expected = [0xA, 0x19, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_middle_right_overlap() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x1E, 0x28); - let expected = [0xA, 0x14, 0x1E, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_full_encompass() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x0, 0x3C); - let expected = [0x0, 0x3C]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_to_partial_encompass() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x0, 0x23); - let expected = [0x0, 0x23, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_aligned_front() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(5, 10); - let expected = [5, 0x14, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_aligned_back() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x32, 0x37); - let expected = [0xA, 0x14, 0x28, 0x37]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_aligned_start_middle() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x14, 0x19); - let expected = [0xA, 0x19, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_aligned_end_middle() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x23, 0x28); - let expected = [0xA, 0x14, 0x23, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_aligned_in_between_end() { - let mut builder = generate_tester(&[0xA, 0x14, 0x1E, 0x28, 0x32, 0x3C]); - builder.add(0xF, 0x1E); - let expected = [0xA, 0x28, 0x32, 0x3C]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_aligned_in_between_start() { - let mut builder = generate_tester(&[0xA, 0x14, 0x1E, 0x28, 0x32, 0x3C]); - builder.add(20, 35); - let expected = [0xA, 0x28, 0x32, 0x3C]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_adjacent_ranges() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.add(0x13, 0x14); - builder.add(0x14, 0x15); - builder.add(0x15, 0x16); - let expected = [0xA, 0x16, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_codepointinversionlist() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&[ - 0x5, 0xA, 0x16, 0x21, 0x2C, 0x33, - ]) - .unwrap(); - builder.add_set(&check); - let expected = [0x5, 0x14, 0x16, 0x21, 0x28, 0x33]; - assert_eq!(builder.intervals, expected); - } - #[test] - fn test_add_char() { - let mut builder = CodePointInversionListBuilder::new(); - builder.add_char('a'); - let expected = [0x61, 0x62]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_range() { - let mut builder = CodePointInversionListBuilder::new(); - builder.add_range('A'..='Z'); - let expected = [0x41, 0x5B]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_range32() { - let mut builder = CodePointInversionListBuilder::new(); - builder.add_range32(0xd800..=0xdfff); - let expected = [0xd800, 0xe000]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_add_invalid_range() { - let mut builder = CodePointInversionListBuilder::new(); - builder.add_range('Z'..='A'); - assert!(builder.intervals.is_empty()); - } - - #[test] - fn test_remove_empty() { - let mut builder = CodePointInversionListBuilder::new(); - builder.remove(0x0, 0xA); - assert!(builder.intervals.is_empty()); - } - - #[test] - fn test_remove_entire_builder() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.remove(0xA, 0x32); - assert!(builder.intervals.is_empty()); - } - - #[test] - fn test_remove_entire_range() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.remove(0xA, 0x14); - let expected = [0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_partial_range_left() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.remove(0xA, 0x2B); - let expected = [0x2B, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_ne_range() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.remove(0x14, 0x28); - let expected = [0xA, 0x14, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_partial_range_right() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.remove(0xF, 0x37); - let expected = [0xA, 0xF]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_middle_range() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.remove(0xC, 0x12); - let expected = [0xA, 0xC, 0x12, 0x14, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_ne_middle_range() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.remove(0x19, 0x1B); - let expected = [0xA, 0x14, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_encompassed_range() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32, 70, 80]); - builder.remove(0x19, 0x37); - let expected = [0xA, 0x14, 0x46, 0x50]; - assert_eq!(builder.intervals, expected); - } - #[test] - fn test_remove_adjacent_ranges() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.remove(0x27, 0x28); - builder.remove(0x28, 0x29); - builder.remove(0x29, 0x2A); - let expected = [0xA, 0x14, 0x2A, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_char() { - let mut builder = generate_tester(&[0x41, 0x46]); - builder.remove_char('A'); // 65 - let expected = [0x42, 0x46]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_range() { - let mut builder = generate_tester(&[0x41, 0x5A]); - builder.remove_range('A'..'L'); // 65 - 76 - let expected = [0x4C, 0x5A]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_remove_set() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32, 70, 80]); - let remove = - CodePointInversionList::try_from_u32_inversion_list_slice(&[0xA, 0x14, 0x2D, 0x4B]) - .unwrap(); - builder.remove_set(&remove); - let expected = [0x28, 0x2D, 0x4B, 0x50]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_retain_char() { - let mut builder = generate_tester(&[0x41, 0x5A]); - builder.retain_char('A'); // 65 - let expected = [0x41, 0x42]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_retain_range() { - let mut builder = generate_tester(&[0x41, 0x5A]); - builder.retain_range('C'..'F'); // 67 - 70 - let expected = [0x43, 0x46]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_retain_range_empty() { - let mut builder = generate_tester(&[0x41, 0x46]); - builder.retain_range('F'..'Z'); - assert!(builder.intervals.is_empty()); - } - - #[test] - fn test_retain_set() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32, 70, 80]); - let retain = CodePointInversionList::try_from_u32_inversion_list_slice(&[ - 0xE, 0x14, 0x19, 0x37, 0x4D, 0x51, - ]) - .unwrap(); - builder.retain_set(&retain); - let expected = [0xE, 0x14, 0x28, 0x32, 0x4D, 0x50]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.complement(); - let expected = [0x0, 0xA, 0x14, 0x28, 0x32, (char::MAX as u32) + 1]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement_empty() { - let mut builder = generate_tester(&[]); - builder.complement(); - let expected = [0x0, (char::MAX as u32) + 1]; - assert_eq!(builder.intervals, expected); - - builder.complement(); - let expected: [u32; 0] = []; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement_zero_max() { - let mut builder = generate_tester(&[0x0, 0xA, 0x5A, (char::MAX as u32) + 1]); - builder.complement(); - let expected = [0xA, 0x5A]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement_interior() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.complement_list([0xE, 0x14]); - let expected = [0xA, 0xE, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement_exterior() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.complement_list([0x19, 0x23]); - let expected = [0xA, 0x14, 0x19, 0x23, 0x28, 0x32]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement_larger_list() { - let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]); - builder.complement_list([0x1E, 0x37, 0x3C, 0x46]); - let expected = [0xA, 0x14, 0x1E, 0x28, 0x32, 0x37, 0x3C, 0x46]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement_char() { - let mut builder = generate_tester(&[0x41, 0x4C]); // A - K - builder.complement_char('A'); - builder.complement_char('L'); - let expected = [0x42, 0x4D]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement_range() { - let mut builder = generate_tester(&[0x46, 0x4C]); // F - K - builder.complement_range('A'..='Z'); - let expected = [0x41, 0x46, 0x4C, 0x5B]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_complement_set() { - let mut builder = generate_tester(&[0x43, 0x4E]); - let set = - CodePointInversionList::try_from_u32_inversion_list_slice(&[0x41, 0x46, 0x4B, 0x5A]) - .unwrap(); - builder.complement_set(&set); - let expected = [0x41, 0x43, 0x46, 0x4B, 0x4E, 0x5A]; - assert_eq!(builder.intervals, expected); - } - - #[test] - fn test_is_empty() { - let builder = CodePointInversionListBuilder::new(); - assert!(builder.is_empty()); - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/conversions.rs b/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/conversions.rs deleted file mode 100644 index 7488654a8f32..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/conversions.rs +++ /dev/null @@ -1,180 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use core::iter::FromIterator; -use core::{ - convert::TryFrom, - ops::{Range, RangeBounds, RangeFrom, RangeFull, RangeInclusive, RangeTo, RangeToInclusive}, -}; - -use super::RangeError; -use crate::codepointinvlist::utils::deconstruct_range; -use crate::codepointinvlist::CodePointInversionList; -use crate::codepointinvlist::CodePointInversionListBuilder; -use potential_utf::PotentialCodePoint; -use zerovec::ZeroVec; - -fn try_from_range<'data>( - range: impl RangeBounds, -) -> Result, RangeError> { - let (from, till) = deconstruct_range(range); - if from < till { - let set = [ - PotentialCodePoint::from_u24(from), - PotentialCodePoint::from_u24(till), - ]; - let inv_list: ZeroVec = ZeroVec::alloc_from_slice(&set); - #[expect(clippy::unwrap_used)] // valid - Ok(CodePointInversionList::try_from_inversion_list(inv_list).unwrap()) - } else { - Err(RangeError(from, till)) - } -} - -impl TryFrom> for CodePointInversionList<'_> { - type Error = RangeError; - - fn try_from(range: Range) -> Result { - try_from_range(range) - } -} - -impl TryFrom> for CodePointInversionList<'_> { - type Error = RangeError; - - fn try_from(range: RangeFrom) -> Result { - try_from_range(range) - } -} - -impl TryFrom for CodePointInversionList<'_> { - type Error = RangeError; - - fn try_from(_: RangeFull) -> Result { - Ok(Self::all()) - } -} - -impl TryFrom> for CodePointInversionList<'_> { - type Error = RangeError; - - fn try_from(range: RangeInclusive) -> Result { - try_from_range(range) - } -} - -impl TryFrom> for CodePointInversionList<'_> { - type Error = RangeError; - - fn try_from(range: RangeTo) -> Result { - try_from_range(range) - } -} - -impl TryFrom> for CodePointInversionList<'_> { - type Error = RangeError; - - fn try_from(range: RangeToInclusive) -> Result { - try_from_range(range) - } -} - -impl FromIterator> for CodePointInversionList<'_> { - fn from_iter>>(iter: I) -> Self { - let mut builder = CodePointInversionListBuilder::new(); - for range in iter { - builder.add_range32(range); - } - builder.build() - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::codepointinvlist::CodePointInversionList; - use core::{char, convert::TryFrom}; - - #[test] - fn test_try_from_range() { - let check: Vec = CodePointInversionList::try_from('A'..'B') - .unwrap() - .iter_chars() - .collect(); - assert_eq!(vec!['A'], check); - } - - #[test] - fn test_try_from_range_error() { - let check = CodePointInversionList::try_from('A'..'A'); - assert!(matches!(check, Err(RangeError(65, 65)))); - } - - #[test] - fn test_try_from_range_inclusive() { - let check: Vec = CodePointInversionList::try_from('A'..='A') - .unwrap() - .iter_chars() - .collect(); - assert_eq!(vec!['A'], check); - } - - #[test] - fn test_try_from_range_inclusive_err() { - let check = CodePointInversionList::try_from('B'..'A'); - assert!(matches!(check, Err(RangeError(66, 65)))); - } - - #[test] - fn test_try_from_range_from() { - let uset = CodePointInversionList::try_from('A'..).unwrap(); - let check: usize = uset.size(); - let expected: usize = (char::MAX as usize) + 1 - 65; - assert_eq!(expected, check); - } - - #[test] - fn test_try_from_range_to() { - let uset = CodePointInversionList::try_from(..'A').unwrap(); - let check: usize = uset.size(); - let expected: usize = 65; - assert_eq!(expected, check); - } - - #[test] - fn test_try_from_range_to_err() { - let check = CodePointInversionList::try_from(..(0x0 as char)); - assert!(matches!(check, Err(RangeError(0, 0)))); - } - - #[test] - fn test_try_from_range_to_inclusive() { - let uset = CodePointInversionList::try_from(..='A').unwrap(); - let check: usize = uset.size(); - let expected: usize = 66; - assert_eq!(expected, check); - } - - #[test] - fn test_try_from_range_full() { - let uset = CodePointInversionList::try_from(..).unwrap(); - let check: usize = uset.size(); - let expected: usize = (char::MAX as usize) + 1; - assert_eq!(expected, check); - } - - #[test] - fn test_from_range_iterator() { - let ranges = [ - 0..=0x3FFF, - 0x4000..=0x7FFF, - 0x8000..=0xBFFF, - 0xC000..=0xFFFF, - ]; - let expected = - CodePointInversionList::try_from_u32_inversion_list_slice(&[0x0, 0x1_0000]).unwrap(); - let actual = CodePointInversionList::from_iter(ranges); - assert_eq!(expected, actual); - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/cpinvlist.rs b/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/cpinvlist.rs deleted file mode 100644 index 74fa5ee57682..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/cpinvlist.rs +++ /dev/null @@ -1,1070 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -#[cfg(feature = "serde")] -use alloc::format; -#[cfg(feature = "serde")] -use alloc::string::String; -#[cfg(feature = "alloc")] -use alloc::vec::Vec; -use core::{char, ops::RangeBounds, ops::RangeInclusive}; -use potential_utf::PotentialCodePoint; -use yoke::Yokeable; -use zerofrom::ZeroFrom; -use zerovec::{ule::AsULE, zerovec, ZeroVec}; - -use super::InvalidSetError; -use crate::codepointinvlist::utils::{deconstruct_range, is_valid_zv}; - -/// Represents the end code point of the Basic Multilingual Plane range, starting from code point 0, inclusive -const BMP_MAX: u32 = 0xFFFF; - -/// Represents the inversion list for a set of all code points in the Basic Multilingual Plane. -const BMP_INV_LIST_VEC: ZeroVec = zerovec!(PotentialCodePoint; PotentialCodePoint::to_unaligned; [PotentialCodePoint::from_u24(0x0), PotentialCodePoint::from_u24(BMP_MAX + 1)]); - -/// Represents the inversion list for all of the code points in the Unicode range. -const ALL_VEC: ZeroVec = zerovec!(PotentialCodePoint; PotentialCodePoint::to_unaligned; [PotentialCodePoint::from_u24(0x0), PotentialCodePoint::from_u24((char::MAX as u32) + 1)]); - -/// A membership wrapper for [`CodePointInversionList`]. -/// -/// Provides exposure to membership functions and constructors from serialized `CodePointSet`s (sets of code points) -/// and predefined ranges. -#[zerovec::make_varule(CodePointInversionListULE)] -#[zerovec::skip_derive(Ord)] -#[zerovec::derive(Debug)] -#[derive(Debug, Eq, PartialEq, Clone, Yokeable, ZeroFrom)] -#[cfg_attr(not(feature = "alloc"), zerovec::skip_derive(ZeroMapKV, ToOwned))] -pub struct CodePointInversionList<'data> { - // If we wanted to use an array to keep the memory on the stack, there is an unsafe nightly feature - // https://doc.rust-lang.org/nightly/core/array/trait.FixedSizeArray.html - // Allows for traits of fixed size arrays - - // Implements an [inversion list.](https://en.wikipedia.org/wiki/Inversion_list) - inv_list: ZeroVec<'data, PotentialCodePoint>, - size: u32, -} - -#[cfg(feature = "serde")] -impl<'de: 'a, 'a> serde::Deserialize<'de> for CodePointInversionList<'a> { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - use serde::de::Error; - - let parsed_inv_list = if deserializer.is_human_readable() { - let parsed_strings = Vec::>::deserialize(deserializer)?; - let mut inv_list = ZeroVec::new_owned(Vec::with_capacity(parsed_strings.len() * 2)); - for range in parsed_strings { - fn internal(range: &str) -> Option<(u32, u32)> { - let (start, range) = UnicodeCodePoint::parse(range)?; - if range.is_empty() { - return Some((start.0, start.0)); - } - let (hyphen, range) = UnicodeCodePoint::parse(range)?; - if hyphen.0 != '-' as u32 { - return None; - } - let (end, range) = UnicodeCodePoint::parse(range)?; - range.is_empty().then_some((start.0, end.0)) - } - let (start, end) = internal(&range).ok_or_else(|| Error::custom(format!( - "Cannot deserialize invalid inversion list for CodePointInversionList: {range:?}" - )))?; - inv_list.with_mut(|v| { - v.push(PotentialCodePoint::from_u24(start).to_unaligned()); - v.push(PotentialCodePoint::from_u24(end + 1).to_unaligned()); - }); - } - inv_list - } else { - ZeroVec::::deserialize(deserializer)? - }; - CodePointInversionList::try_from_inversion_list(parsed_inv_list).map_err(|e| { - Error::custom(format!( - "Cannot deserialize invalid inversion list for CodePointInversionList: {e:?}" - )) - }) - } -} - -#[cfg(feature = "databake")] -impl databake::Bake for CodePointInversionList<'_> { - fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream { - env.insert("icu_collections"); - let inv_list = self.inv_list.bake(env); - let size = self.size.bake(env); - // Safe because our parts are safe. - databake::quote! { unsafe { - #[allow(unused_unsafe)] - icu_collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(#inv_list, #size) - }} - } -} - -#[cfg(feature = "databake")] -impl databake::BakeSize for CodePointInversionList<'_> { - fn borrows_size(&self) -> usize { - self.inv_list.borrows_size() - } -} - -#[cfg(feature = "serde")] -#[derive(Debug, Copy, Clone)] -struct UnicodeCodePoint(u32); - -#[cfg(feature = "serde")] -impl UnicodeCodePoint { - fn from_u32(cp: u32) -> Result { - if cp <= char::MAX as u32 { - Ok(Self(cp)) - } else { - Err(format!("Not a Unicode code point {cp}")) - } - } - - fn parse(value: &str) -> Option<(Self, &str)> { - Some(if let Some(hex) = value.strip_prefix("U+") { - let (escape, remainder) = (hex.get(..4)?, hex.get(4..)?); - (Self(u32::from_str_radix(escape, 16).ok()?), remainder) - } else { - let c = value.chars().next()?; - (Self(c as u32), value.get(c.len_utf8()..)?) - }) - } -} - -#[cfg(feature = "serde")] -impl core::fmt::Display for UnicodeCodePoint { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - match self.0 { - s @ 0xD800..=0xDFFF => write!(f, "U+{s:X}"), - // char should be in range by construction but this code is not so performance-sensitive - // so we just use the replacement character - c => write!( - f, - "{}", - char::from_u32(c).unwrap_or(char::REPLACEMENT_CHARACTER) - ), - } - } -} - -#[cfg(feature = "serde")] -impl serde::Serialize for CodePointInversionList<'_> { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - if serializer.is_human_readable() { - use serde::ser::Error; - use serde::ser::SerializeSeq; - let mut seq = serializer.serialize_seq(Some(self.inv_list.len() / 2))?; - for range in self.iter_ranges() { - let start = UnicodeCodePoint::from_u32(*range.start()).map_err(S::Error::custom)?; - if range.start() == range.end() { - seq.serialize_element(&format!("{start}"))?; - } else { - let end = UnicodeCodePoint::from_u32(*range.end()).map_err(S::Error::custom)?; - seq.serialize_element(&format!("{start}-{end}",))?; - } - } - seq.end() - } else { - // Note: serde(flatten) currently does not promote a struct field of type Vec - // to replace the struct when serializing. The error message from the default - // serialization is: "can only flatten structs and maps (got a sequence)". - self.inv_list.serialize(serializer) - } - } -} - -impl<'data> CodePointInversionList<'data> { - /// Returns a new [`CodePointInversionList`] from an [inversion list](https://en.wikipedia.org/wiki/Inversion_list) - /// represented as a [`ZeroVec`]`<`[`PotentialCodePoint`]`>` of code points. - /// - /// The inversion list must be of even length, sorted ascending non-overlapping, - /// and within the bounds of `0x0 -> 0x10FFFF` inclusive, and end points being exclusive. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// use icu::collections::codepointinvlist::InvalidSetError; - /// use potential_utf::PotentialCodePoint; - /// use zerovec::ZeroVec; - /// - /// let valid = [0x0, 0x10000]; - /// let inv_list: ZeroVec = valid - /// .into_iter() - /// .map(PotentialCodePoint::from_u24) - /// .collect(); - /// let result = CodePointInversionList::try_from_inversion_list(inv_list); - /// assert!(matches!(result, CodePointInversionList)); - /// - /// let invalid = vec![0x0, 0x80, 0x3]; - /// let inv_list: ZeroVec = invalid - /// .iter() - /// .copied() - /// .map(PotentialCodePoint::from_u24) - /// .collect(); - /// let result = CodePointInversionList::try_from_inversion_list(inv_list); - /// assert!(matches!(result, Err(InvalidSetError(_)))); - /// if let Err(InvalidSetError(actual)) = result { - /// assert_eq!( - /// &invalid, - /// &actual.into_iter().map(u32::from).collect::>() - /// ); - /// } - /// ``` - pub fn try_from_inversion_list( - inv_list: ZeroVec<'data, PotentialCodePoint>, - ) -> Result { - #[expect(clippy::indexing_slicing)] // chunks - if is_valid_zv(&inv_list) { - let size = inv_list - .as_ule_slice() - .chunks(2) - .map(|end_points| { - u32::from(::from_unaligned(end_points[1])) - - u32::from(::from_unaligned(end_points[0])) - }) - .sum::(); - Ok(Self { inv_list, size }) - } else { - Err(InvalidSetError( - #[cfg(feature = "alloc")] - inv_list.to_vec(), - )) - } - } - - /// Safety: no actual safety invariants, however has correctness invariants - #[doc(hidden)] // databake internal - pub const unsafe fn from_parts_unchecked( - inv_list: ZeroVec<'data, PotentialCodePoint>, - size: u32, - ) -> Self { - Self { inv_list, size } - } - - /// Returns a new, fully-owned [`CodePointInversionList`] by cloning an [inversion list](https://en.wikipedia.org/wiki/Inversion_list) - /// represented as a slice of [`PotentialCodePoint`] code points. - /// - /// The inversion list must be of even length, sorted ascending non-overlapping, - /// and within the bounds of `0x0 -> 0x10FFFF` inclusive, and end points being exclusive. - /// - /// ✨ *Enabled with the `alloc` Cargo feature.* - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// - /// let bmp_list = &[0x0, 0x10000]; - /// let smp_list = &[0x10000, 0x20000]; - /// let sip_list = &[0x20000, 0x30000]; - /// - /// let lists: Vec = - /// [&bmp_list[..], smp_list, sip_list] - /// .into_iter() - /// .map(|l| { - /// CodePointInversionList::try_from_u32_inversion_list_slice(l) - /// .unwrap() - /// }) - /// .collect(); - /// - /// let bmp = &lists[0]; - /// assert!(bmp.contains32(0xFFFF)); - /// assert!(!bmp.contains32(0x10000)); - /// - /// assert!(!lists.iter().any(|set| set.contains32(0x40000))); - /// ``` - #[cfg(feature = "alloc")] - pub fn try_from_u32_inversion_list_slice(inv_list: &[u32]) -> Result { - let inv_list_zv: ZeroVec = inv_list - .iter() - .copied() - .map(PotentialCodePoint::from_u24) - .collect(); - CodePointInversionList::try_from_inversion_list(inv_list_zv) - } - - /// Attempts to convert this list into a fully-owned one. No-op if already fully owned - /// - /// ✨ *Enabled with the `alloc` Cargo feature.* - #[cfg(feature = "alloc")] - pub fn into_owned(self) -> CodePointInversionList<'static> { - CodePointInversionList { - inv_list: self.inv_list.into_owned(), - size: self.size, - } - } - - /// Returns an owned inversion list representing the current [`CodePointInversionList`] - /// - /// ✨ *Enabled with the `alloc` Cargo feature.* - #[cfg(feature = "alloc")] - pub fn get_inversion_list_vec(&self) -> Vec { - self.as_inversion_list().iter().map(u32::from).collect() - } - - /// Returns [`CodePointInversionList`] spanning entire Unicode range - /// - /// The range spans from `0x0 -> 0x10FFFF` inclusive. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// - /// let expected = [0x0, (char::MAX as u32) + 1]; - /// assert_eq!( - /// CodePointInversionList::all().get_inversion_list_vec(), - /// expected - /// ); - /// assert_eq!( - /// CodePointInversionList::all().size(), - /// (expected[1] - expected[0]) as usize - /// ); - /// ``` - pub const fn all() -> Self { - Self { - inv_list: ALL_VEC, - size: (char::MAX as u32) + 1, - } - } - - /// Returns [`CodePointInversionList`] spanning BMP range - /// - /// The range spans from `0x0 -> 0xFFFF` inclusive. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// - /// const BMP_MAX: u32 = 0xFFFF; - /// - /// let expected = [0x0, BMP_MAX + 1]; - /// assert_eq!( - /// CodePointInversionList::bmp().get_inversion_list_vec(), - /// expected - /// ); - /// assert_eq!( - /// CodePointInversionList::bmp().size(), - /// (expected[1] - expected[0]) as usize - /// ); - /// ``` - pub fn bmp() -> Self { - Self { - inv_list: BMP_INV_LIST_VEC, - size: BMP_MAX + 1, - } - } - - /// Returns the inversion list as a slice - /// - /// Public only to the crate, not exposed to public - #[cfg(feature = "alloc")] - pub(crate) fn as_inversion_list(&self) -> &ZeroVec<'_, PotentialCodePoint> { - &self.inv_list - } - - /// Yields an [`Iterator`] going through the character set in the [`CodePointInversionList`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x44, 0x45, 0x46]; - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// let mut ex_iter_chars = example.iter_chars(); - /// assert_eq!(Some('A'), ex_iter_chars.next()); - /// assert_eq!(Some('B'), ex_iter_chars.next()); - /// assert_eq!(Some('C'), ex_iter_chars.next()); - /// assert_eq!(Some('E'), ex_iter_chars.next()); - /// assert_eq!(None, ex_iter_chars.next()); - /// ``` - pub fn iter_chars(&self) -> impl Iterator + '_ { - #[expect(clippy::indexing_slicing)] // chunks - self.inv_list - .as_ule_slice() - .chunks(2) - .flat_map(|pair| { - u32::from(PotentialCodePoint::from_unaligned(pair[0])) - ..u32::from(PotentialCodePoint::from_unaligned(pair[1])) - }) - .filter_map(char::from_u32) - } - - /// Yields an [`Iterator`] returning the ranges of the code points that are - /// included in the [`CodePointInversionList`] - /// - /// Ranges are returned as [`RangeInclusive`], which is inclusive of its - /// `end` bound value. An end-inclusive behavior matches the ICU4C/J - /// behavior of ranges, ex: `CodePointInversionList::contains(UChar32 start, UChar32 end)`. - /// - /// # Example - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x44, 0x45, 0x46]; - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// let mut example_iter_ranges = example.iter_ranges(); - /// assert_eq!(Some(0x41..=0x43), example_iter_ranges.next()); - /// assert_eq!(Some(0x45..=0x45), example_iter_ranges.next()); - /// assert_eq!(None, example_iter_ranges.next()); - /// ``` - pub fn iter_ranges(&self) -> impl ExactSizeIterator> + '_ { - #[expect(clippy::indexing_slicing)] // chunks - self.inv_list.as_ule_slice().chunks(2).map(|pair| { - let range_start = u32::from(PotentialCodePoint::from_unaligned(pair[0])); - let range_limit = u32::from(PotentialCodePoint::from_unaligned(pair[1])); - range_start..=(range_limit - 1) - }) - } - - /// Yields an [`Iterator`] returning the ranges of the code points that are - /// *not* included in the [`CodePointInversionList`] - /// - /// Ranges are returned as [`RangeInclusive`], which is inclusive of its - /// `end` bound value. An end-inclusive behavior matches the ICU4C/J - /// behavior of ranges, ex: `CodePointInversionList::contains(UChar32 start, UChar32 end)`. - /// - /// # Example - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x44, 0x45, 0x46]; - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// let mut example_iter_ranges = example.iter_ranges_complemented(); - /// assert_eq!(Some(0..=0x40), example_iter_ranges.next()); - /// assert_eq!(Some(0x44..=0x44), example_iter_ranges.next()); - /// assert_eq!(Some(0x46..=char::MAX as u32), example_iter_ranges.next()); - /// assert_eq!(None, example_iter_ranges.next()); - /// ``` - pub fn iter_ranges_complemented(&self) -> impl Iterator> + '_ { - let inv_ule = self.inv_list.as_ule_slice(); - let middle = inv_ule.get(1..inv_ule.len() - 1).unwrap_or(&[]); - let beginning = if let Some(first) = self.inv_list.first() { - let first = u32::from(first); - if first == 0 { - None - } else { - Some(0..=first - 1) - } - } else { - None - }; - let end = if let Some(last) = self.inv_list.last() { - let last = u32::from(last); - if last == char::MAX as u32 { - None - } else { - Some(last..=char::MAX as u32) - } - } else { - None - }; - #[expect(clippy::indexing_slicing)] // chunks - let chunks = middle.chunks(2).map(|pair| { - let range_start = u32::from(PotentialCodePoint::from_unaligned(pair[0])); - let range_limit = u32::from(PotentialCodePoint::from_unaligned(pair[1])); - range_start..=(range_limit - 1) - }); - beginning.into_iter().chain(chunks).chain(end) - } - - /// Returns the number of ranges contained in this [`CodePointInversionList`] - pub fn get_range_count(&self) -> usize { - self.inv_list.len() / 2 - } - - /// Returns a specific range contained in this [`CodePointInversionList`] by index. - /// Intended for use in FFI. - pub fn get_nth_range(&self, idx: usize) -> Option> { - let start_idx = idx * 2; - let end_idx = start_idx + 1; - let start = u32::from(self.inv_list.get(start_idx)?); - let end = u32::from(self.inv_list.get(end_idx)?); - Some(start..=(end - 1)) - } - - /// Returns the number of elements of the [`CodePointInversionList`] - pub fn size(&self) -> usize { - if self.is_empty() { - return 0; - } - self.size as usize - } - - /// Returns whether or not the [`CodePointInversionList`] is empty - pub fn is_empty(&self) -> bool { - self.inv_list.is_empty() - } - - /// Wrapper for contains - /// - /// Returns an [`Option`] as to whether or not it is possible for the query to be contained. - /// The value in the [`Option`] is the start index of the range that contains the query. - fn contains_query(&self, query: u32) -> Option { - let query = PotentialCodePoint::try_from(query).ok()?; - match self.inv_list.binary_search(&query) { - Ok(pos) => { - if pos % 2 == 0 { - Some(pos) - } else { - None - } - } - Err(pos) => { - if pos % 2 != 0 && pos < self.inv_list.len() { - Some(pos - 1) - } else { - None - } - } - } - } - - /// Checks to see the query is in the [`CodePointInversionList`] - /// - /// Runs a binary search in `O(log(n))` where `n` is the number of start and end points - /// in the set using [`core`] implementation - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x43, 0x44, 0x45]; - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// assert!(example.contains('A')); - /// assert!(!example.contains('C')); - /// ``` - pub fn contains(&self, query: char) -> bool { - self.contains_query(query as u32).is_some() - } - - /// Checks to see the unsigned int is in the [`CodePointInversionList::all()`](CodePointInversionList::all()) - /// - /// Note: Even though [`u32`] and [`prim@char`] in Rust are non-negative 4-byte - /// values, there is an important difference. A [`u32`] can take values up to - /// a very large integer value, while a [`prim@char`] in Rust is defined to be in - /// the range from 0 to the maximum valid Unicode Scalar Value. - /// - /// Runs a binary search in `O(log(n))` where `n` is the number of start and end points - /// in the set using [`core`] implementation - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x43, 0x44, 0x45]; - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// assert!(example.contains32(0x41)); - /// assert!(!example.contains32(0x43)); - /// ``` - pub fn contains32(&self, query: u32) -> bool { - self.contains_query(query).is_some() - } - - /// Checks to see if the range is in the [`CodePointInversionList`] - /// - /// Runs a binary search in `O(log(n))` where `n` is the number of start and end points - /// in the set using [`Vec`] implementation. Only runs the search once on the `start` - /// parameter, while the `end` parameter is checked in a single `O(1)` step. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x43, 0x44, 0x45]; - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// assert!(example.contains_range('A'..'C')); - /// assert!(example.contains_range('A'..='B')); - /// assert!(!example.contains_range('A'..='C')); - /// ``` - /// - /// Surrogate points (`0xD800 -> 0xDFFF`) will return [`false`] if the Range contains them but the - /// [`CodePointInversionList`] does not. - /// - /// Note: when comparing to ICU4C/J, keep in mind that `Range`s in Rust are - /// constructed inclusive of start boundary and exclusive of end boundary. - /// The ICU4C/J `CodePointInversionList::contains(UChar32 start, UChar32 end)` method - /// differs by including the end boundary. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// use std::char; - /// let check = - /// char::from_u32(0xD7FE).unwrap()..char::from_u32(0xE001).unwrap(); - /// let example_list = [0xD7FE, 0xD7FF, 0xE000, 0xE001]; - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// assert!(!example.contains_range(check)); - /// ``` - pub fn contains_range(&self, range: impl RangeBounds) -> bool { - let (from, till) = deconstruct_range(range); - if from >= till { - return false; - } - match self.contains_query(from) { - Some(pos) => { - if let Some(x) = self.inv_list.get(pos + 1) { - (till) <= x.into() - } else { - debug_assert!( - false, - "Inversion list query should not return out of bounds index" - ); - false - } - } - None => false, - } - } - - /// Check if the calling [`CodePointInversionList`] contains all the characters of the given [`CodePointInversionList`] - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x46, 0x55, 0x5B]; // A - E, U - Z - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// let a_to_d = CodePointInversionList::try_from_u32_inversion_list_slice(&[ - /// 0x41, 0x45, - /// ]) - /// .unwrap(); - /// let f_to_t = CodePointInversionList::try_from_u32_inversion_list_slice(&[ - /// 0x46, 0x55, - /// ]) - /// .unwrap(); - /// let r_to_x = CodePointInversionList::try_from_u32_inversion_list_slice(&[ - /// 0x52, 0x58, - /// ]) - /// .unwrap(); - /// assert!(example.contains_set(&a_to_d)); // contains all - /// assert!(!example.contains_set(&f_to_t)); // contains none - /// assert!(!example.contains_set(&r_to_x)); // contains some - /// ``` - pub fn contains_set(&self, set: &Self) -> bool { - if set.size() > self.size() { - return false; - } - - let mut set_ranges = set.iter_ranges(); - let mut check_elem = set_ranges.next(); - - let ranges = self.iter_ranges(); - for range in ranges { - match check_elem { - Some(ref check_range) => { - if check_range.start() >= range.start() - && check_range.end() <= &(range.end() + 1) - { - check_elem = set_ranges.next(); - } - } - _ => break, - } - } - check_elem.is_none() - } - - /// Returns the end of the initial substring where the characters are either contained/not contained - /// in the set. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x44]; // {A, B, C} - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// assert_eq!(example.span("CABXYZ", true), 3); - /// assert_eq!(example.span("XYZC", false), 3); - /// assert_eq!(example.span("XYZ", true), 0); - /// assert_eq!(example.span("ABC", false), 0); - /// ``` - pub fn span(&self, span_str: &str, contained: bool) -> usize { - span_str - .chars() - .take_while(|&x| self.contains(x) == contained) - .count() - } - - /// Returns the start of the trailing substring (starting from end of string) where the characters are - /// either contained/not contained in the set. Returns the length of the string if no valid return. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// let example_list = [0x41, 0x44]; // {A, B, C} - /// let example = CodePointInversionList::try_from_u32_inversion_list_slice( - /// &example_list, - /// ) - /// .unwrap(); - /// assert_eq!(example.span_back("XYZCAB", true), 3); - /// assert_eq!(example.span_back("ABCXYZ", true), 6); - /// assert_eq!(example.span_back("CABXYZ", false), 3); - /// ``` - pub fn span_back(&self, span_str: &str, contained: bool) -> usize { - span_str.len() - - span_str - .chars() - .rev() - .take_while(|&x| self.contains(x) == contained) - .count() - } -} - -#[cfg(test)] -mod tests { - use super::{CodePointInversionList, InvalidSetError}; - use std::{char, vec::Vec}; - use zerovec::ZeroVec; - - #[test] - fn test_codepointinversionlist_try_from_vec() { - let ex = vec![0x2, 0x3, 0x4, 0x5]; - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert_eq!(ex, check.get_inversion_list_vec()); - assert_eq!(2, check.size()); - } - - #[test] - fn test_codepointinversionlist_try_from_vec_error() { - let check = vec![0x1, 0x1, 0x2, 0x3, 0x4]; - let set = CodePointInversionList::try_from_u32_inversion_list_slice(&check); - assert!(matches!(set, Err(InvalidSetError(_)))); - if let Err(InvalidSetError(actual)) = set { - assert_eq!( - &check, - &actual.into_iter().map(u32::from).collect::>() - ); - } - } - - // CodePointInversionList membership functions - #[test] - fn test_codepointinversionlist_contains_query() { - let ex = vec![0x41, 0x46, 0x4B, 0x55]; - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert!(check.contains_query(0x40).is_none()); - assert_eq!(check.contains_query(0x41).unwrap(), 0); - assert_eq!(check.contains_query(0x44).unwrap(), 0); - assert!(check.contains_query(0x46).is_none()); - assert_eq!(check.contains_query(0x4C).unwrap(), 2); - assert!(check.contains_query(0x56).is_none()); - } - - #[test] - fn test_codepointinversionlist_contains() { - let ex = vec![0x2, 0x5, 0xA, 0xF]; - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert!(check.contains(0x2 as char)); - assert!(check.contains(0x4 as char)); - assert!(check.contains(0xA as char)); - assert!(check.contains(0xE as char)); - } - - #[test] - fn test_codepointinversionlist_contains_false() { - let ex = vec![0x2, 0x5, 0xA, 0xF]; - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert!(!check.contains(0x1 as char)); - assert!(!check.contains(0x5 as char)); - assert!(!check.contains(0x9 as char)); - assert!(!check.contains(0xF as char)); - assert!(!check.contains(0x10 as char)); - } - - #[test] - fn test_codepointinversionlist_contains_range() { - let ex = vec![0x41, 0x46, 0x4B, 0x55]; - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert!(check.contains_range('A'..='E')); // 65 - 69 - assert!(check.contains_range('C'..'D')); // 67 - 67 - assert!(check.contains_range('L'..'P')); // 76 - 80 - assert!(!check.contains_range('L'..='U')); // 76 - 85 - } - - #[test] - fn test_codepointinversionlist_contains_range_false() { - let ex = vec![0x41, 0x46, 0x4B, 0x55]; - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert!(!check.contains_range('!'..'A')); // 33 - 65 - assert!(!check.contains_range('F'..'K')); // 70 - 74 - assert!(!check.contains_range('U'..)); // 85 - .. - } - - #[test] - fn test_codepointinversionlist_contains_range_invalid() { - let check = CodePointInversionList::all(); - assert!(!check.contains_range('A'..'!')); // 65 - 33 - assert!(!check.contains_range('A'..'A')); // 65 - 65 - } - - #[test] - fn test_codepointinversionlist_contains_set_u() { - let ex = vec![0xA, 0x14, 0x28, 0x32, 0x46, 0x50, 0x64, 0x6E]; - let u = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - let inside = vec![0xF, 0x14, 0x2C, 0x31, 0x46, 0x50, 0x64, 0x6D]; - let s = CodePointInversionList::try_from_u32_inversion_list_slice(&inside).unwrap(); - assert!(u.contains_set(&s)); - } - - #[test] - fn test_codepointinversionlist_contains_set_u_false() { - let ex = vec![0xA, 0x14, 0x28, 0x32, 0x46, 0x50, 0x64, 0x78]; - let u = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - let outside = vec![0x0, 0xA, 0x16, 0x2C, 0x32, 0x46, 0x4F, 0x51, 0x6D, 0x6F]; - let s = CodePointInversionList::try_from_u32_inversion_list_slice(&outside).unwrap(); - assert!(!u.contains_set(&s)); - } - - #[test] - fn test_codepointinversionlist_size() { - let ex = vec![0x2, 0x5, 0xA, 0xF]; - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert_eq!(8, check.size()); - let check = CodePointInversionList::all(); - let expected = (char::MAX as u32) + 1; - assert_eq!(expected as usize, check.size()); - let inv_list_vec = vec![]; - let check = CodePointInversionList { - inv_list: ZeroVec::from_slice_or_alloc(&inv_list_vec), - size: 0, - }; - assert_eq!(check.size(), 0); - } - - #[test] - fn test_codepointinversionlist_is_empty() { - let inv_list_vec = vec![]; - let check = CodePointInversionList { - inv_list: ZeroVec::from_slice_or_alloc(&inv_list_vec), - size: 0, - }; - assert!(check.is_empty()); - } - - #[test] - fn test_codepointinversionlist_is_not_empty() { - let check = CodePointInversionList::all(); - assert!(!check.is_empty()); - } - - #[test] - fn test_codepointinversionlist_iter_chars() { - let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801]; - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - let mut iter = check.iter_chars(); - assert_eq!(Some('A'), iter.next()); - assert_eq!(Some('B'), iter.next()); - assert_eq!(Some('C'), iter.next()); - assert_eq!(Some('E'), iter.next()); - assert_eq!(None, iter.next()); - } - - #[test] - fn test_codepointinversionlist_iter_ranges() { - let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801]; - let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - let mut ranges = set.iter_ranges(); - assert_eq!(Some(0x41..=0x43), ranges.next()); - assert_eq!(Some(0x45..=0x45), ranges.next()); - assert_eq!(Some(0xD800..=0xD800), ranges.next()); - assert_eq!(None, ranges.next()); - } - - #[test] - fn test_codepointinversionlist_iter_ranges_exactsizeiter_trait() { - let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801]; - let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - let ranges = set.iter_ranges(); - assert_eq!(3, ranges.len()); - } - - #[test] - fn test_codepointinversionlist_range_count() { - let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801]; - let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert_eq!(3, set.get_range_count()); - } - - #[test] - fn test_codepointinversionlist_get_nth_range() { - let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801]; - let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert_eq!(Some(0x41..=0x43), set.get_nth_range(0)); - assert_eq!(Some(0x45..=0x45), set.get_nth_range(1)); - assert_eq!(Some(0xD800..=0xD800), set.get_nth_range(2)); - assert_eq!(None, set.get_nth_range(3)); - } - - // Range cannot represent the upper bound (non-inclusive) for - // char::MAX, whereas Range can. - #[test] - fn test_codepointinversionlist_iter_ranges_with_max_code_point() { - let ex = vec![0x80, (char::MAX as u32) + 1]; - let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - let mut ranges = set.iter_ranges(); - assert_eq!(Some(0x80..=(char::MAX as u32)), ranges.next()); - assert_eq!(None, ranges.next()); - } - - #[test] - fn test_codepointinversionlist_span_contains() { - let ex = vec![0x41, 0x44, 0x46, 0x4B]; // A - D, F - K - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert_eq!(check.span("ABCDE", true), 3); - assert_eq!(check.span("E", true), 0); - } - - #[test] - fn test_codepointinversionlist_span_does_not_contain() { - let ex = vec![0x41, 0x44, 0x46, 0x4B]; // A - D, F - K - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert_eq!(check.span("DEF", false), 2); - assert_eq!(check.span("KLMA", false), 3); - } - - #[test] - fn test_codepointinversionlist_span_back_contains() { - let ex = vec![0x41, 0x44, 0x46, 0x4B]; // A - D, F - K - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert_eq!(check.span_back("XYZABFH", true), 3); - assert_eq!(check.span_back("ABCXYZ", true), 6); - } - - #[test] - fn test_codepointinversionlist_span_back_does_not_contain() { - let ex = vec![0x41, 0x44, 0x46, 0x4B]; // A - D, F - K - let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap(); - assert_eq!(check.span_back("ABCXYZ", false), 3); - assert_eq!(check.span_back("XYZABC", false), 6); - } - - #[test] - fn test_uniset_to_inv_list() { - let inv_list = [ - 0x9, 0xE, 0x20, 0x21, 0x85, 0x86, 0xA0, 0xA1, 0x1626, 0x1627, 0x2000, 0x2003, 0x2028, - 0x202A, 0x202F, 0x2030, 0x205F, 0x2060, 0x3000, 0x3001, - ]; - let s: CodePointInversionList = - CodePointInversionList::try_from_u32_inversion_list_slice(&inv_list).unwrap(); - let round_trip_inv_list = s.get_inversion_list_vec(); - assert_eq!( - round_trip_inv_list.into_iter().collect::>(), - inv_list - ); - } - - #[test] - fn test_serde_serialize() { - let inv_list = [0x41, 0x46, 0x4B, 0x55]; - let uniset = CodePointInversionList::try_from_u32_inversion_list_slice(&inv_list).unwrap(); - let json_str = serde_json::to_string(&uniset).unwrap(); - assert_eq!(json_str, r#"["A-E","K-T"]"#); - } - - #[test] - fn test_serde_serialize_surrogates() { - let inv_list = [0xDFAB, 0xDFFF]; - let uniset = CodePointInversionList::try_from_u32_inversion_list_slice(&inv_list).unwrap(); - let json_str = serde_json::to_string(&uniset).unwrap(); - assert_eq!(json_str, r#"["U+DFAB-U+DFFE"]"#); - } - - #[test] - fn test_serde_deserialize() { - let inv_list_str = r#"["A-E","K-T"]"#; - let exp_inv_list = [0x41, 0x46, 0x4B, 0x55]; - let exp_uniset = - CodePointInversionList::try_from_u32_inversion_list_slice(&exp_inv_list).unwrap(); - let act_uniset: CodePointInversionList = serde_json::from_str(inv_list_str).unwrap(); - assert_eq!(act_uniset, exp_uniset); - } - - #[test] - fn test_serde_deserialize_surrogates() { - let inv_list_str = r#"["U+DFAB-U+DFFE"]"#; - let exp_inv_list = [0xDFAB, 0xDFFF]; - let exp_uniset = - CodePointInversionList::try_from_u32_inversion_list_slice(&exp_inv_list).unwrap(); - let act_uniset: CodePointInversionList = serde_json::from_str(inv_list_str).unwrap(); - assert_eq!(act_uniset, exp_uniset); - } - - #[test] - fn test_serde_deserialize_invalid() { - assert!(serde_json::from_str::("[65,70,98775,85]").is_err()); - assert!(serde_json::from_str::("[65,70,U+FFFFFFFFFF,85]").is_err()); - } - - #[test] - fn test_serde_with_postcard_roundtrip() -> Result<(), postcard::Error> { - let set = CodePointInversionList::bmp(); - let set_serialized: Vec = postcard::to_allocvec(&set).unwrap(); - let set_deserialized: CodePointInversionList = - postcard::from_bytes::(&set_serialized)?; - - assert_eq!(&set, &set_deserialized); - assert!(!set_deserialized.inv_list.is_owned()); - - Ok(()) - } - - #[test] - fn databake() { - databake::test_bake!( - CodePointInversionList<'static>, - const, - unsafe { - #[allow(unused_unsafe)] - crate::codepointinvlist::CodePointInversionList::from_parts_unchecked( - unsafe { - zerovec::ZeroVec::from_bytes_unchecked( - b"0\0\0\0:\0\0\0A\0\0\0G\0\0\0a\0\0\0g\0\0\0", - ) - }, - 22u32, - ) - }, - icu_collections, - [zerovec], - ); - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/mod.rs b/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/mod.rs deleted file mode 100644 index be47ec5ca0d2..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/mod.rs +++ /dev/null @@ -1,80 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! This module provides necessary functionality for highly efficient querying of sets of Unicode characters. -//! -//! It is an implementation of the code point portion of the existing -//! [ICU4C UnicodeSet API](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UnicodeSet.html). -//! -//! # Architecture -//! ICU4X [`CodePointInversionList`] is split up into independent levels, with [`CodePointInversionList`] representing the membership/query API, -//! and [`CodePointInversionListBuilder`] representing the builder API. -//! -//! # Examples: -//! -//! ## Creating a `CodePointInversionList` -//! -//! `CodePointSets` are created from either serialized [`CodePointSets`](CodePointInversionList), -//! represented by [inversion lists](https://unicode-org.github.io/icu/userguide/strings/properties.html), -//! the [`CodePointInversionListBuilder`], or from the Properties API. -//! -//! ``` -//! use icu::collections::codepointinvlist::{ -//! CodePointInversionList, CodePointInversionListBuilder, -//! }; -//! -//! let mut builder = CodePointInversionListBuilder::new(); -//! builder.add_range('A'..='Z'); -//! let set: CodePointInversionList = builder.build(); -//! -//! assert!(set.contains('A')); -//! ``` -//! -//! ## Querying a `CodePointInversionList` -//! -//! Currently, you can check if a character/range of characters exists in the [`CodePointInversionList`], or iterate through the characters. -//! -//! ``` -//! use icu::collections::codepointinvlist::{ -//! CodePointInversionList, CodePointInversionListBuilder, -//! }; -//! -//! let mut builder = CodePointInversionListBuilder::new(); -//! builder.add_range('A'..='Z'); -//! let set: CodePointInversionList = builder.build(); -//! -//! assert!(set.contains('A')); -//! assert!(set.contains_range('A'..='C')); -//! assert_eq!(set.iter_chars().next(), Some('A')); -//! ``` -//! -//! [`ICU4X`]: ../icu/index.html - -#[cfg(feature = "alloc")] -#[macro_use] -mod builder; -#[cfg(feature = "alloc")] -mod conversions; -mod cpinvlist; -mod utils; - -#[cfg(feature = "alloc")] -use alloc::vec::Vec; -#[cfg(feature = "alloc")] -pub use builder::CodePointInversionListBuilder; -pub use cpinvlist::CodePointInversionList; -pub use cpinvlist::CodePointInversionListULE; -use displaydoc::Display; - -#[derive(Display, Debug)] -/// A [`CodePointInversionList`] was constructed with an invalid inversion list -#[cfg_attr(feature = "alloc", displaydoc("Invalid set: {0:?}"))] -#[allow(clippy::exhaustive_structs)] // newtype -pub struct InvalidSetError(#[cfg(feature = "alloc")] pub Vec); - -/// A [`CodePointInversionList`] was constructed from an invalid range -#[derive(Display, Debug)] -#[displaydoc("Invalid range: {0}..{1}")] -#[allow(clippy::exhaustive_structs)] // newtype -pub struct RangeError(pub u32, pub u32); diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/utils.rs b/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/utils.rs deleted file mode 100644 index ef04d3b18b9a..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointinvlist/utils.rs +++ /dev/null @@ -1,118 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use core::{ - char, - ops::{Bound::*, RangeBounds}, -}; -use potential_utf::PotentialCodePoint; -use zerovec::ule::AsULE; -use zerovec::ZeroVec; - -/// Returns whether the vector is sorted ascending non inclusive, of even length, -/// and within the bounds of `0x0 -> 0x10FFFF + 1` inclusive. -#[expect(clippy::indexing_slicing)] // windows -#[expect(clippy::unwrap_used)] // by is_empty check -pub fn is_valid_zv(inv_list_zv: &ZeroVec<'_, PotentialCodePoint>) -> bool { - inv_list_zv.is_empty() - || (inv_list_zv.len() % 2 == 0 - && inv_list_zv.as_ule_slice().windows(2).all(|chunk| { - ::from_unaligned(chunk[0]) - < ::from_unaligned(chunk[1]) - }) - && u32::from(inv_list_zv.last().unwrap()) <= char::MAX as u32 + 1) -} - -/// Returns start (inclusive) and end (exclusive) bounds of [`RangeBounds`] -pub fn deconstruct_range(range: impl RangeBounds) -> (u32, u32) -where - T: Into + Copy, -{ - let from = match range.start_bound() { - Included(b) => (*b).into(), - Excluded(_) => unreachable!(), - Unbounded => 0, - }; - let till = match range.end_bound() { - Included(b) => (*b).into() + 1, - Excluded(b) => (*b).into(), - Unbounded => (char::MAX as u32) + 1, - }; - (from, till) -} - -#[cfg(test)] -mod tests { - use super::{deconstruct_range, is_valid_zv, PotentialCodePoint}; - use core::char; - use zerovec::ZeroVec; - - fn make_zv(slice: &[u32]) -> ZeroVec<'_, PotentialCodePoint> { - slice - .iter() - .copied() - .map(PotentialCodePoint::from_u24) - .collect() - } - #[test] - fn test_is_valid_zv() { - let check = make_zv(&[0x2, 0x3, 0x4, 0x5]); - assert!(is_valid_zv(&check)); - } - - #[test] - fn test_is_valid_zv_empty() { - let check = make_zv(&[]); - assert!(is_valid_zv(&check)); - } - - #[test] - fn test_is_valid_zv_overlapping() { - let check = make_zv(&[0x2, 0x5, 0x4, 0x6]); - assert!(!is_valid_zv(&check)); - } - - #[test] - fn test_is_valid_zv_out_of_order() { - let check = make_zv(&[0x5, 0x4, 0x5, 0x6, 0x7]); - assert!(!is_valid_zv(&check)); - } - - #[test] - fn test_is_valid_zv_duplicate() { - let check = make_zv(&[0x1, 0x2, 0x3, 0x3, 0x5]); - assert!(!is_valid_zv(&check)); - } - - #[test] - fn test_is_valid_zv_odd() { - let check = make_zv(&[0x1, 0x2, 0x3, 0x4, 0x5]); - assert!(!is_valid_zv(&check)); - } - - #[test] - fn test_is_valid_zv_out_of_range() { - let check = make_zv(&[0x1, 0x2, 0x3, 0x4, (char::MAX as u32) + 1]); - assert!(!is_valid_zv(&check)); - } - - // deconstruct_range - - #[test] - fn test_deconstruct_range() { - let expected = (0x41, 0x45); - let check = deconstruct_range('A'..'E'); // Range - assert_eq!(check, expected); - let check = deconstruct_range('A'..='D'); // Range Inclusive - assert_eq!(check, expected); - let check = deconstruct_range('A'..); // Range From - assert_eq!(check, (0x41, (char::MAX as u32) + 1)); - let check = deconstruct_range(..'A'); // Range To - assert_eq!(check, (0x0, 0x41)); - let check = deconstruct_range(..='A'); // Range To Inclusive - assert_eq!(check, (0x0, 0x42)); - let check = deconstruct_range::(..); // Range Full - assert_eq!(check, (0x0, (char::MAX as u32) + 1)); - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointinvliststringlist/mod.rs b/deps/crates/vendor/icu_collections-v2/src/codepointinvliststringlist/mod.rs deleted file mode 100644 index 9fb15c64bfe0..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointinvliststringlist/mod.rs +++ /dev/null @@ -1,400 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! This module provides functionality for querying of sets of Unicode code points and strings. -//! -//! It depends on [`CodePointInversionList`] to efficiently represent Unicode code points, while -//! it also maintains a list of strings in the set. -//! -//! It is an implementation of the existing [ICU4C UnicodeSet API](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UnicodeSet.html). - -#[cfg(feature = "alloc")] -use crate::codepointinvlist::CodePointInversionListBuilder; -use crate::codepointinvlist::{CodePointInversionList, CodePointInversionListULE}; -#[cfg(feature = "alloc")] -use alloc::string::{String, ToString}; -#[cfg(feature = "alloc")] -use alloc::vec::Vec; -use displaydoc::Display; -use yoke::Yokeable; -use zerofrom::ZeroFrom; -use zerovec::{VarZeroSlice, VarZeroVec}; - -/// A data structure providing a concrete implementation of a set of code points and strings, -/// using an inversion list for the code points. -/// -/// This is what ICU4C calls a `UnicodeSet`. -#[zerovec::make_varule(CodePointInversionListAndStringListULE)] -#[zerovec::skip_derive(Ord)] -#[zerovec::derive(Debug)] -#[derive(Debug, Eq, PartialEq, Clone, Yokeable, ZeroFrom)] -#[cfg_attr(not(feature = "alloc"), zerovec::skip_derive(ZeroMapKV, ToOwned))] -// Valid to auto-derive Deserialize because the invariants are weakly held -#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] -#[cfg_attr(feature = "serde", zerovec::derive(Serialize, Deserialize, Debug))] -pub struct CodePointInversionListAndStringList<'data> { - #[cfg_attr(feature = "serde", serde(borrow))] - #[zerovec::varule(CodePointInversionListULE)] - cp_inv_list: CodePointInversionList<'data>, - // Invariants (weakly held): - // - no input string is length 1 (a length 1 string should be a single code point) - // - the string list is sorted - // - the elements in the string list are unique - #[cfg_attr(feature = "serde", serde(borrow))] - str_list: VarZeroVec<'data, str>, -} - -#[cfg(feature = "databake")] -impl databake::Bake for CodePointInversionListAndStringList<'_> { - fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream { - env.insert("icu_collections"); - let cp_inv_list = self.cp_inv_list.bake(env); - let str_list = self.str_list.bake(env); - // Safe because our parts are safe. - databake::quote! { - icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(#cp_inv_list, #str_list) - } - } -} - -#[cfg(feature = "databake")] -impl databake::BakeSize for CodePointInversionListAndStringList<'_> { - fn borrows_size(&self) -> usize { - self.cp_inv_list.borrows_size() + self.str_list.borrows_size() - } -} - -impl<'data> CodePointInversionListAndStringList<'data> { - /// Returns a new [`CodePointInversionListAndStringList`] from both a [`CodePointInversionList`] for the - /// code points and a [`VarZeroVec`]`<`[`str`]`>` of strings. - pub fn try_from( - cp_inv_list: CodePointInversionList<'data>, - str_list: VarZeroVec<'data, str>, - ) -> Result { - // Verify invariants: - // Do so by using the equivalent of str_list.iter().windows(2) to get - // overlapping windows of size 2. The above putative code is not possible - // because `.windows()` exists on a slice, but VarZeroVec cannot return a slice - // because the non-fixed size elements necessitate at least some type - // of allocation. - { - let mut it = str_list.iter(); - if let Some(mut x) = it.next() { - if x.len() == 1 { - return Err(InvalidStringList::InvalidStringLength( - #[cfg(feature = "alloc")] - x.to_string(), - )); - } - for y in it { - if x.len() == 1 { - return Err(InvalidStringList::InvalidStringLength( - #[cfg(feature = "alloc")] - x.to_string(), - )); - } else if x == y { - return Err(InvalidStringList::StringListNotUnique( - #[cfg(feature = "alloc")] - x.to_string(), - )); - } else if x > y { - return Err(InvalidStringList::StringListNotSorted( - #[cfg(feature = "alloc")] - x.to_string(), - #[cfg(feature = "alloc")] - y.to_string(), - )); - } - - // Next window begins. Update `x` here, `y` will be updated in next loop iteration. - x = y; - } - } - } - - Ok(CodePointInversionListAndStringList { - cp_inv_list, - str_list, - }) - } - - #[doc(hidden)] // databake internal - pub const fn from_parts_unchecked( - cp_inv_list: CodePointInversionList<'data>, - str_list: VarZeroVec<'data, str>, - ) -> Self { - CodePointInversionListAndStringList { - cp_inv_list, - str_list, - } - } - - /// Returns the number of elements in this set (its cardinality). - /// Note than the elements of a set may include both individual - /// codepoints and strings. - pub fn size(&self) -> usize { - self.cp_inv_list.size() + self.str_list.len() - } - - /// Return true if this set contains multi-code point strings or the empty string. - pub fn has_strings(&self) -> bool { - !self.str_list.is_empty() - } - - /// - /// # Examples - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// use icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList; - /// use zerovec::VarZeroVec; - /// - /// let cp_slice = &[0, 0x1_0000, 0x10_FFFF, 0x11_0000]; - /// let cp_list = - /// CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap(); - /// let str_slice = &["", "bmp_max", "unicode_max", "zero"]; - /// let str_list = VarZeroVec::::from(str_slice); - /// - /// let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap(); - /// - /// assert!(cpilsl.contains_str("bmp_max")); - /// assert!(cpilsl.contains_str("")); - /// assert!(cpilsl.contains_str("A")); - /// assert!(cpilsl.contains_str("ቔ")); // U+1254 ETHIOPIC SYLLABLE QHEE - /// assert!(!cpilsl.contains_str("bazinga!")); - /// ``` - pub fn contains_str(&self, s: &str) -> bool { - let mut chars = s.chars(); - if let Some(first_char) = chars.next() { - if chars.next().is_none() { - return self.contains(first_char); - } - } - self.str_list.binary_search(s).is_ok() - } - - /// See [`Self::contains_str`] - pub fn contains_utf8(&self, s: &[u8]) -> bool { - use utf8_iter::Utf8CharsEx; - let mut chars = s.chars(); - if let Some(first_char) = chars.next() { - if chars.next().is_none() { - return self.contains(first_char); - } - } - self.str_list - .binary_search_by(|t| t.as_bytes().cmp(s)) - .is_ok() - } - - /// - /// # Examples - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// use icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList; - /// use zerovec::VarZeroVec; - /// - /// let cp_slice = &[0, 0x80, 0xFFFF, 0x1_0000, 0x10_FFFF, 0x11_0000]; - /// let cp_list = - /// CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap(); - /// let str_slice = &["", "ascii_max", "bmp_max", "unicode_max", "zero"]; - /// let str_list = VarZeroVec::::from(str_slice); - /// - /// let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap(); - /// - /// assert!(cpilsl.contains32(0)); - /// assert!(cpilsl.contains32(0x0042)); - /// assert!(!cpilsl.contains32(0x0080)); - /// ``` - pub fn contains32(&self, cp: u32) -> bool { - self.cp_inv_list.contains32(cp) - } - - /// - /// # Examples - /// ``` - /// use icu::collections::codepointinvlist::CodePointInversionList; - /// use icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList; - /// use zerovec::VarZeroVec; - /// - /// let cp_slice = &[0, 0x1_0000, 0x10_FFFF, 0x11_0000]; - /// let cp_list = - /// CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap(); - /// let str_slice = &["", "bmp_max", "unicode_max", "zero"]; - /// let str_list = VarZeroVec::::from(str_slice); - /// - /// let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap(); - /// - /// assert!(cpilsl.contains('A')); - /// assert!(cpilsl.contains('ቔ')); // U+1254 ETHIOPIC SYLLABLE QHEE - /// assert!(!cpilsl.contains('\u{1_0000}')); - /// assert!(!cpilsl.contains('🨫')); // U+1FA2B NEUTRAL CHESS TURNED QUEEN - pub fn contains(&self, ch: char) -> bool { - self.contains32(ch as u32) - } - - /// Access the underlying [`CodePointInversionList`]. - pub fn code_points(&self) -> &CodePointInversionList<'data> { - &self.cp_inv_list - } - - /// Access the contained strings. - pub fn strings(&self) -> &VarZeroSlice { - &self.str_list - } -} - -#[cfg(feature = "alloc")] -/// ✨ *Enabled with the `alloc` Cargo feature.* -impl<'a> FromIterator<&'a str> for CodePointInversionListAndStringList<'_> { - fn from_iter(it: I) -> Self - where - I: IntoIterator, - { - let mut builder = CodePointInversionListBuilder::new(); - let mut strings = Vec::<&str>::new(); - for s in it { - let mut chars = s.chars(); - if let Some(first_char) = chars.next() { - if chars.next().is_none() { - builder.add_char(first_char); - continue; - } - } - strings.push(s); - } - - // Ensure that the string list is sorted. If not, the binary search that - // is used for `.contains(&str)` will return garbage output. - strings.sort_unstable(); - strings.dedup(); - - let cp_inv_list = builder.build(); - let str_list = VarZeroVec::::from(&strings); - - CodePointInversionListAndStringList { - cp_inv_list, - str_list, - } - } -} - -/// Custom Errors for [`CodePointInversionListAndStringList`]. -#[derive(Display, Debug)] -#[allow(clippy::exhaustive_enums)] // todo, missed in 2.0 -pub enum InvalidStringList { - /// A string in the string list had an invalid length - #[cfg_attr(feature = "alloc", displaydoc("Invalid string length for string: {0}"))] - InvalidStringLength(#[cfg(feature = "alloc")] String), - /// A string in the string list appears more than once - #[cfg_attr(feature = "alloc", displaydoc("String list has duplicate: {0}"))] - StringListNotUnique(#[cfg(feature = "alloc")] String), - /// Two strings in the string list compare to each other opposite of sorted order - #[cfg_attr( - feature = "alloc", - displaydoc("Strings in string list not in sorted order: ({0}, {1})") - )] - StringListNotSorted( - #[cfg(feature = "alloc")] String, - #[cfg(feature = "alloc")] String, - ), -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_size_has_strings() { - let cp_slice = &[0, 1, 0x7F, 0x80, 0xFFFF, 0x1_0000, 0x10_FFFF, 0x11_0000]; - let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap(); - let str_slice = &["ascii_max", "bmp_max", "unicode_max", "zero"]; - let str_list = VarZeroVec::::from(str_slice); - - let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap(); - - assert!(cpilsl.has_strings()); - assert_eq!(8, cpilsl.size()); - } - - #[test] - fn test_empty_string_allowed() { - let cp_slice = &[0, 1, 0x7F, 0x80, 0xFFFF, 0x1_0000, 0x10_FFFF, 0x11_0000]; - let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap(); - let str_slice = &["", "ascii_max", "bmp_max", "unicode_max", "zero"]; - let str_list = VarZeroVec::::from(str_slice); - - let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap(); - - assert!(cpilsl.has_strings()); - assert_eq!(9, cpilsl.size()); - } - - #[test] - fn test_invalid_string() { - let cp_slice = &[0, 1]; - let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap(); - let str_slice = &["a"]; - let str_list = VarZeroVec::::from(str_slice); - - let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list); - - assert!(matches!( - cpilsl, - Err(InvalidStringList::InvalidStringLength(_)) - )); - } - - #[test] - fn test_invalid_string_list_has_duplicate() { - let cp_slice = &[0, 1]; - let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap(); - let str_slice = &["abc", "abc"]; - let str_list = VarZeroVec::::from(str_slice); - - let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list); - - assert!(matches!( - cpilsl, - Err(InvalidStringList::StringListNotUnique(_)) - )); - } - - #[test] - fn test_invalid_string_list_not_sorted() { - let cp_slice = &[0, 1]; - let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap(); - let str_slice = &["xyz", "abc"]; - let str_list = VarZeroVec::::from(str_slice); - - let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list); - - assert!(matches!( - cpilsl, - Err(InvalidStringList::StringListNotSorted(_, _)) - )); - } - - #[test] - fn test_from_iter_invariants() { - let in_strs_1 = ["a", "abc", "xyz", "abc"]; - let in_strs_2 = ["xyz", "abc", "a", "abc"]; - - let cpilsl_1 = CodePointInversionListAndStringList::from_iter(in_strs_1); - let cpilsl_2 = CodePointInversionListAndStringList::from_iter(in_strs_2); - - assert_eq!(cpilsl_1, cpilsl_2); - - assert!(cpilsl_1.has_strings()); - assert!(cpilsl_1.contains_str("abc")); - assert!(cpilsl_1.contains_str("xyz")); - assert!(!cpilsl_1.contains_str("def")); - - assert_eq!(1, cpilsl_1.cp_inv_list.size()); - assert!(cpilsl_1.contains('a')); - assert!(!cpilsl_1.contains('0')); - assert!(!cpilsl_1.contains('q')); - - assert_eq!(3, cpilsl_1.size()); - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/cptrie.rs b/deps/crates/vendor/icu_collections-v2/src/codepointtrie/cptrie.rs deleted file mode 100644 index 086d936e2b57..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/cptrie.rs +++ /dev/null @@ -1,1897 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use crate::codepointtrie::error::Error; -use crate::codepointtrie::impl_const::*; - -#[cfg(feature = "alloc")] -use crate::codepointinvlist::CodePointInversionList; -use core::char::CharTryFromError; -use core::convert::Infallible; -use core::convert::TryFrom; -use core::fmt::Display; -#[cfg(feature = "alloc")] -use core::iter::FromIterator; -use core::num::TryFromIntError; -use core::ops::RangeInclusive; -use yoke::Yokeable; -use zerofrom::ZeroFrom; -use zerovec::ule::AsULE; -#[cfg(feature = "alloc")] -use zerovec::ule::UleError; -use zerovec::ZeroSlice; -use zerovec::ZeroVec; - -/// The type of trie represents whether the trie has an optimization that -/// would make it smaller or faster. -/// -/// Regarding performance, a trie being a small or fast type affects the number of array lookups -/// needed for code points in the range `[0x1000, 0x10000)`. In this range, `Small` tries use 4 array lookups, -/// while `Fast` tries use 2 array lookups. -/// Code points before the interval (in `[0, 0x1000)`) will always use 2 array lookups. -/// Code points after the interval (in `[0x10000, 0x10FFFF]`) will always use 4 array lookups. -/// -/// Regarding size, `Fast` type tries are larger than `Small` type tries because the minimum size of -/// the index array is larger. The minimum size is the "fast max" limit, which is the limit of the range -/// of code points with 2 array lookups. -/// -/// See the document [Unicode Properties and Code Point Tries in ICU4X](https://github.com/unicode-org/icu4x/blob/main/documents/design/properties_code_point_trie.md). -/// -/// Also see [`UCPTrieType`](https://unicode-org.github.io/icu-docs/apidoc/dev/icu4c/ucptrie_8h.html) in ICU4C. -#[derive(Clone, Copy, PartialEq, Debug, Eq)] -#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] -#[cfg_attr(feature = "databake", derive(databake::Bake))] -#[cfg_attr(feature = "databake", databake(path = icu_collections::codepointtrie))] -#[allow(clippy::exhaustive_enums)] // based on a stable serialized form -pub enum TrieType { - /// Represents the "fast" type code point tries for the - /// [`TrieType`] trait. The "fast max" limit is set to `0xffff`. - Fast = 0, - /// Represents the "small" type code point tries for the - /// [`TrieType`] trait. The "fast max" limit is set to `0x0fff`. - Small = 1, -} - -// TrieValue trait - -// AsULE is AsUnalignedLittleEndian, i.e. "allowed in a zerovec" - -/// A trait representing the values stored in the data array of a [`CodePointTrie`]. -/// This trait is used as a type parameter in constructing a `CodePointTrie`. -/// -/// This trait can be implemented on anything that can be represented as a u32s worth of data. -pub trait TrieValue: Copy + Eq + PartialEq + AsULE + 'static { - /// Last-resort fallback value to return if we cannot read data from the trie. - /// - /// In most cases, the error value is read from the last element of the `data` array, - /// this value is used for empty codepointtrie arrays - /// Error type when converting from a u32 to this `TrieValue`. - type TryFromU32Error: Display; - /// A parsing function that is primarily motivated by deserialization contexts. - /// When the serialization type width is smaller than 32 bits, then it is expected - /// that the call site will widen the value to a `u32` first. - fn try_from_u32(i: u32) -> Result; - - /// A method for converting back to a `u32` that can roundtrip through - /// [`Self::try_from_u32()`]. The default implementation of this trait - /// method panics in debug mode and returns 0 in release mode. - /// - /// This method is allowed to have GIGO behavior when fed a value that has - /// no corresponding `u32` (since such values cannot be stored in the trie) - fn to_u32(self) -> u32; -} - -macro_rules! impl_primitive_trie_value { - ($primitive:ty, $error:ty) => { - impl TrieValue for $primitive { - type TryFromU32Error = $error; - fn try_from_u32(i: u32) -> Result { - Self::try_from(i) - } - - #[allow(trivial_numeric_casts)] - fn to_u32(self) -> u32 { - // bitcast when the same size, zero-extend/sign-extend - // when not the same size - self as u32 - } - } - }; -} - -impl_primitive_trie_value!(u8, TryFromIntError); -impl_primitive_trie_value!(u16, TryFromIntError); -impl_primitive_trie_value!(u32, Infallible); -impl_primitive_trie_value!(i8, TryFromIntError); -impl_primitive_trie_value!(i16, TryFromIntError); -impl_primitive_trie_value!(i32, TryFromIntError); -impl_primitive_trie_value!(char, CharTryFromError); - -/// Helper function used by [`get_range`]. Converts occurrences of trie's null -/// value into the provided `null_value`. -/// -/// Note: the ICU version of this helper function uses a `ValueFilter` function -/// to apply a transform on a non-null value. But currently, this implementation -/// stops short of that functionality, and instead leaves the non-null trie value -/// untouched. This is equivalent to having a `ValueFilter` function that is the -/// identity function. -fn maybe_filter_value(value: T, trie_null_value: T, null_value: T) -> T { - if value == trie_null_value { - null_value - } else { - value - } -} - -/// This struct represents a de-serialized [`CodePointTrie`] that was exported from -/// ICU binary data. -/// -/// For more information: -/// - [ICU Site design doc](https://unicode-org.github.io/icu/design/struct/utrie) -/// - [ICU User Guide section on Properties lookup](https://unicode-org.github.io/icu/userguide/strings/properties.html#lookup) -// serde impls in crate::serde -#[derive(Debug, Eq, PartialEq, Yokeable, ZeroFrom)] -pub struct CodePointTrie<'trie, T: TrieValue> { - /// # Safety Invariant - /// - /// The value of `header.trie_type` must not change after construction. - pub(crate) header: CodePointTrieHeader, - /// # Safety Invariant - /// - /// If `header.trie_type == TrieType::Fast`, `index.len()` must be greater - /// than `FAST_TYPE_FAST_INDEXING_MAX`. Otherwise, `index.len()` - /// must be greater than `SMALL_TYPE_FAST_INDEXING_MAX`. Furthermore, - /// this field must not change after construction. (Strictly: It must - /// not become shorter than the length requirement stated above and the - /// values within the prefix up to the length requirement must not change.) - pub(crate) index: ZeroVec<'trie, u16>, - /// # Safety Invariant - /// - /// If `header.trie_type == TrieType::Fast`, `data.len()` must be greater - /// than `FAST_TYPE_DATA_MASK` plus the largest value in - /// `index[0..FAST_TYPE_FAST_INDEXING_MAX + 1]`. Otherwise, `data.len()` - /// must be greater than `FAST_TYPE_DATA_MASK` plus the largest value in - /// `index[0..SMALL_TYPE_FAST_INDEXING_MAX + 1]`. Furthermore, this field - /// must not change after construction. (Strictly: The stated length - /// requirement must continue to hold.) - pub(crate) data: ZeroVec<'trie, T>, - // serde impl skips this field - #[zerofrom(clone)] // TrieValue is Copy, this allows us to avoid - // a T: ZeroFrom bound - pub(crate) error_value: T, -} - -/// This struct contains the fixed-length header fields of a [`CodePointTrie`]. -/// -/// # Safety Invariant -/// -/// The `trie_type` field must not change after construction. -/// -/// (In practice, all the fields here remain unchanged during the lifetime -/// of the trie.) -#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] -#[cfg_attr(feature = "databake", derive(databake::Bake))] -#[cfg_attr(feature = "databake", databake(path = icu_collections::codepointtrie))] -#[derive(Copy, Clone, Debug, Eq, PartialEq, Yokeable, ZeroFrom)] -#[allow(clippy::exhaustive_structs)] // based on a stable serialized form -pub struct CodePointTrieHeader { - /// The code point of the start of the last range of the trie. A - /// range is defined as a partition of the code point space such that the - /// value in this trie associated with all code points of the same range is - /// the same. - /// - /// For the property value data for many Unicode properties, - /// often times, `high_start` is `U+10000` or lower. In such cases, not - /// reserving space in the `index` array for duplicate values is a large - /// savings. The "highValue" associated with the `high_start` range is - /// stored at the second-to-last position of the `data` array. - /// (See `impl_const::HIGH_VALUE_NEG_DATA_OFFSET`.) - pub high_start: u32, - /// A version of the `high_start` value that is right-shifted 12 spaces, - /// but is rounded up to a multiple `0x1000` for easy testing from UTF-8 - /// lead bytes. - pub shifted12_high_start: u16, - /// Offset for the null block in the "index-3" table of the `index` array. - /// Set to an impossibly high value (e.g., `0xffff`) if there is no - /// dedicated index-3 null block. - pub index3_null_offset: u16, - /// Internal data null block offset, not shifted. - /// Set to an impossibly high value (e.g., `0xfffff`) if there is no - /// dedicated data null block. - pub data_null_offset: u32, - /// The value stored in the trie that represents a null value being - /// associated to a code point. - pub null_value: u32, - /// The enum value representing the type of trie, where trie type is as it - /// is defined in ICU (ex: Fast, Small). - /// - /// # Safety Invariant - /// - /// Must not change after construction. - pub trie_type: TrieType, -} - -impl TryFrom for TrieType { - type Error = Error; - - fn try_from(trie_type_int: u8) -> Result { - match trie_type_int { - 0 => Ok(TrieType::Fast), - 1 => Ok(TrieType::Small), - _ => Err(Error::FromDeserialized { - reason: "Cannot parse value for trie_type", - }), - } - } -} - -// Helper macro that turns arithmetic into wrapping-in-release, checked-in-debug arithmetic -// -// This is rustc's default behavior anyway, however some projects like Android deliberately -// enable overflow checks. CodePointTrie::get() is intended to be used in Android bionic which -// cares about codesize and we don't want the pile of panicking infrastructure brought in by overflow -// checks, so we force wrapping in release. -// See #6052 -macro_rules! w( - // Note: these matchers are not perfect since you cannot have an operator after an expr matcher - // Use variables if you need complex first operands. - ($a:tt + $b:expr) => { - { - #[allow(unused_parens)] - let a = $a; - let b = $b; - debug_assert!(a.checked_add(b).is_some()); - $a.wrapping_add($b) - } - }; - ($a:tt - $b:expr) => { - - { - #[allow(unused_parens)] - let a = $a; - let b = $b; - debug_assert!(a.checked_sub(b).is_some()); - $a.wrapping_sub($b) - } - }; - ($a:tt * $b:expr) => { - { - #[allow(unused_parens)] - let a = $a; - let b = $b; - debug_assert!(a.checked_mul(b).is_some()); - $a.wrapping_mul($b) - } - }; -); - -impl<'trie, T: TrieValue> CodePointTrie<'trie, T> { - #[doc(hidden)] // databake internal - /// # Safety - /// - /// `header.trie_type`, `index`, and `data` must - /// satisfy the invariants for the fields of the - /// same names on `CodePointTrie`. - pub const unsafe fn from_parts_unstable_unchecked_v1( - header: CodePointTrieHeader, - index: ZeroVec<'trie, u16>, - data: ZeroVec<'trie, T>, - error_value: T, - ) -> Self { - // Field invariants upheld: The caller is responsible. - // In practice, this means that datagen in the databake - // mode upholds these invariants when constructing the - // `CodePointTrie` that is then baked. - Self { - header, - index, - data, - error_value, - } - } - - /// Returns a new [`CodePointTrie`] backed by borrowed data for the `index` - /// array and `data` array, whose data values have width `W`. - pub fn try_new( - header: CodePointTrieHeader, - index: ZeroVec<'trie, u16>, - data: ZeroVec<'trie, T>, - ) -> Result, Error> { - let error_value = Self::validate_fields(&header, &index, &data)?; - // Field invariants upheld: Checked by `validate_fields` above. - let trie: CodePointTrie<'trie, T> = CodePointTrie { - header, - index, - data, - error_value, - }; - Ok(trie) - } - - /// Checks the invariant on the fields that fast-path access relies on for - /// safety in order to omit slice bound checks and upon success returns the - /// `error_value` for the trie. - /// - /// # Safety Usable Invariant - /// - /// Iff this function returns `Ok(T)`, the arguments satisfy the invariants - /// for corresponding fields of `CodePointTrie`. (Other than proving that - /// nothing else changes the fields subsequently.) - pub(crate) fn validate_fields( - header: &CodePointTrieHeader, - index: &ZeroSlice, - data: &ZeroSlice, - ) -> Result { - let error_value = data.last().ok_or(Error::EmptyDataVector)?; - - // `CodePointTrie` lookup has two stages: fast and small (the trie types - // are also fast and small; they affect where the boundary between fast - // and small lookups is). - // - // The length requirements for `index` and `data` are checked here only - // for the fast lookup case so that the fast lookup can omit bound checks - // at the time of access. In the small lookup case, bounds are checked at - // the time of access. - // - // The fast lookup happens on the prefixes of `index` and `data` with - // more items for the small lookup case afterwards. The check here - // only looks at the prefixes relevant to the fast case. - // - // In the fast lookup case, the bits of the of the code point are - // partitioned into a bit prefix and a bit suffix. First, a value - // is read from `index` by indexing into it using the bit prefix. - // Then `data` is accessed by the value just read from `index` plus - // the bit suffix. - // - // Therefore, the length of `index` needs to accommodate access - // by the maximum possible bit prefix, and the length of `data` - // needs to accommodate access by the largest value stored in the part - // of `data` reachable by the bit prefix plus the maximum possible bit - // suffix. - // - // The maximum possible bit prefix depends on the trie type. - - // The maximum code point that can be used for fast-path access: - let fast_max = match header.trie_type { - TrieType::Fast => FAST_TYPE_FAST_INDEXING_MAX, - TrieType::Small => SMALL_TYPE_FAST_INDEXING_MAX, - }; - // Keep only the prefix bits: - let max_bit_prefix = fast_max >> FAST_TYPE_SHIFT; - // Attempt slice the part of `index` that the fast path can index into. - // Since `max_bit_prefix` is the largest possible value used for - // indexing (inclusive bound), we need to add one to get the exclusive - // bound, which is what `get_subslice` wants. - let fast_index = index - .get_subslice(0..(max_bit_prefix as usize) + 1) - .ok_or(Error::IndexTooShortForFastAccess)?; - // Invariant upheld for `index`: If we got this far, the length of `index` - // satisfies its length invariant on the assumption that `header.trie_type` - // will not change subsequently. - - // Now find the largest offset in the part of `index` reachable by the - // bit prefix. `max` can never actually return `None`, since we already - // know the slice isn't empty. Hence, reusing the error kind instead of - // minting a new one for this check. - let max_offset = fast_index - .iter() - .max() - .ok_or(Error::IndexTooShortForFastAccess)?; - // `FAST_TYPE_DATA_MASK` is the maximum possible bit suffix, since the - // maximum is when all the bits in the suffix are set, and the mask - // has that many bits set. - if (max_offset) as usize + (FAST_TYPE_DATA_MASK as usize) >= data.len() { - return Err(Error::DataTooShortForFastAccess); - } - - // Invariant upheld for `data`: If we got this far, the length of `data` - // satisfies `data`'s length invariant on the assumption that the contents - // of `fast_index` subslice of `index` and `header.trie_type` will not - // change subsequently. - - Ok(error_value) - } - - /// Turns this trie into a version whose trie type is encoded in the Rust type. - #[inline] - pub fn to_typed(self) -> Typed, SmallCodePointTrie<'trie, T>> { - match self.header.trie_type { - TrieType::Fast => Typed::Fast(FastCodePointTrie { inner: self }), - TrieType::Small => Typed::Small(SmallCodePointTrie { inner: self }), - } - } - - /// Obtains a reference to this trie as a Rust type that encodes the trie type in the Rust type. - #[inline] - pub fn as_typed_ref( - &self, - ) -> Typed<&FastCodePointTrie<'trie, T>, &SmallCodePointTrie<'trie, T>> { - // SAFETY: `FastCodePointTrie` and `SmallCodePointTrie` are `repr(transparent)` - // with `CodePointTrie`, so transmuting between the references is OK when the - // actual trie type agrees with the semantics of the typed wrapper. - match self.header.trie_type { - TrieType::Fast => Typed::Fast(unsafe { - &*(self as *const CodePointTrie<'trie, T> as *const FastCodePointTrie<'trie, T>) - }), - TrieType::Small => Typed::Small(unsafe { - &*(self as *const CodePointTrie<'trie, T> as *const SmallCodePointTrie<'trie, T>) - }), - } - } - - /// Returns the position in the data array containing the trie's stored - /// error value. - #[inline(always)] // `always` was based on previous normalizer benchmarking - fn trie_error_val_index(&self) -> u32 { - // We use wrapping_sub here to avoid panicky overflow checks. - // len should always be > 1, but if it isn't this will just cause GIGO behavior of producing - // None on `.get()` - debug_assert!(self.data.len() as u32 >= ERROR_VALUE_NEG_DATA_OFFSET); - w!((self.data.len() as u32) - ERROR_VALUE_NEG_DATA_OFFSET) - } - - fn internal_small_index(&self, code_point: u32) -> u32 { - // We use wrapping arithmetic here to avoid overflow checks making their way into binaries - // with overflow checks enabled. Ultimately this code ends up as a checked index, so any - // bugs here will cause GIGO - let mut index1_pos: u32 = code_point >> SHIFT_1; - if self.header.trie_type == TrieType::Fast { - debug_assert!( - FAST_TYPE_FAST_INDEXING_MAX < code_point && code_point < self.header.high_start - ); - index1_pos = w!(index1_pos + BMP_INDEX_LENGTH - OMITTED_BMP_INDEX_1_LENGTH); - } else { - assert!(code_point < self.header.high_start && self.header.high_start > SMALL_LIMIT); - index1_pos = w!(index1_pos + SMALL_INDEX_LENGTH); - } - let index1_val = if let Some(index1_val) = self.index.get(index1_pos as usize) { - index1_val - } else { - return self.trie_error_val_index(); - }; - let index3_block_idx: u32 = - w!((index1_val as u32) + (code_point >> SHIFT_2) & INDEX_2_MASK); - let mut index3_block: u32 = - if let Some(index3_block) = self.index.get(index3_block_idx as usize) { - index3_block as u32 - } else { - return self.trie_error_val_index(); - }; - let mut index3_pos: u32 = (code_point >> SHIFT_3) & INDEX_3_MASK; - let mut data_block: u32; - if index3_block & 0x8000 == 0 { - // 16-bit indexes - data_block = - if let Some(data_block) = self.index.get(w!(index3_block + index3_pos) as usize) { - data_block as u32 - } else { - return self.trie_error_val_index(); - }; - } else { - // 18-bit indexes stored in groups of 9 entries per 8 indexes. - index3_block = w!((index3_block & 0x7fff) + w!((index3_pos & !7) + index3_pos >> 3)); - index3_pos &= 7; - data_block = if let Some(data_block) = self.index.get(index3_block as usize) { - data_block as u32 - } else { - return self.trie_error_val_index(); - }; - data_block = (data_block << w!(2u32 + w!(2u32 * index3_pos))) & 0x30000; - index3_block += 1; - data_block = - if let Some(index3_val) = self.index.get(w!(index3_block + index3_pos) as usize) { - data_block | (index3_val as u32) - } else { - return self.trie_error_val_index(); - }; - } - // Returns data_pos == data_block (offset) + - // portion of code_point bit field for last (4th) lookup - w!(data_block + code_point & SMALL_DATA_MASK) - } - - /// Returns the position in the `data` array for the given code point, - /// where this code point is at or above the fast limit associated for the - /// `trie_type`. We will refer to that limit as "`fastMax`" here. - /// - /// A lookup of the value in the code point trie for a code point in the - /// code point space range [`fastMax`, `high_start`) will be a 4-step - /// lookup: 3 lookups in the `index` array and one lookup in the `data` - /// array. Lookups for code points in the range [`high_start`, - /// `CODE_POINT_MAX`] are short-circuited to be a single lookup, see - /// [`CodePointTrieHeader::high_start`]. - fn small_index(&self, code_point: u32) -> u32 { - if code_point >= self.header.high_start { - w!((self.data.len() as u32) - HIGH_VALUE_NEG_DATA_OFFSET) - } else { - self.internal_small_index(code_point) // helper fn - } - } - - /// Returns the position in the `data` array for the given code point, - /// where this code point is below the fast limit associated for the - /// `trie type`. We will refer to that limit as "`fastMax`" here. - /// - /// A lookup of the value in the code point trie for a code point in the - /// code point space range [0, `fastMax`) will be a 2-step lookup: 1 - /// lookup in the `index` array and one lookup in the `data` array. By - /// design, for trie type `T`, there is an element allocated in the `index` - /// array for each block of code points in [0, `fastMax`), which in - /// turn guarantees that those code points are represented and only need 1 - /// lookup. - fn fast_index(&self, code_point: u32) -> u32 { - let index_array_pos: u32 = code_point >> FAST_TYPE_SHIFT; - let index_array_val: u16 = - if let Some(index_array_val) = self.index.get(index_array_pos as usize) { - index_array_val - } else { - return self.trie_error_val_index(); - }; - let masked_cp = code_point & FAST_TYPE_DATA_MASK; - let index_array_val = index_array_val as u32; - let fast_index_val: u32 = w!(index_array_val + masked_cp); - fast_index_val - } - - /// Returns the value that is associated with `code_point` in this [`CodePointTrie`] - /// if `code_point` uses fast-path lookup or `None` if `code_point` - /// should use small-path lookup or is above the supported range. - #[inline(always)] // "always" to make the `Option` collapse away - fn get32_by_fast_index(&self, code_point: u32) -> Option { - let fast_max = match self.header.trie_type { - TrieType::Fast => FAST_TYPE_FAST_INDEXING_MAX, - TrieType::Small => SMALL_TYPE_FAST_INDEXING_MAX, - }; - if code_point <= fast_max { - // SAFETY: We just checked the invariant of - // `get32_assuming_fast_index`, - // which is - // "If `self.header.trie_type == TrieType::Small`, `code_point` must be at most - // `SMALL_TYPE_FAST_INDEXING_MAX`. If `self.header.trie_type == - // TrieType::Fast`, `code_point` must be at most `FAST_TYPE_FAST_INDEXING_MAX`." - Some(unsafe { self.get32_assuming_fast_index(code_point) }) - } else { - // The caller needs to call `get32_by_small_index` or determine - // that the argument is above the permitted range. - None - } - } - - /// Performs the actual fast-mode lookup - /// - /// # Safety - /// - /// If `self.header.trie_type == TrieType::Small`, `code_point` must be at most - /// `SMALL_TYPE_FAST_INDEXING_MAX`. If `self.header.trie_type == - /// TrieType::Fast`, `code_point` must be at most `FAST_TYPE_FAST_INDEXING_MAX`. - #[inline(always)] - unsafe fn get32_assuming_fast_index(&self, code_point: u32) -> T { - // Check the safety invariant of this method. - debug_assert!( - code_point - <= match self.header.trie_type { - TrieType::Fast => FAST_TYPE_FAST_INDEXING_MAX, - TrieType::Small => SMALL_TYPE_FAST_INDEXING_MAX, - } - ); - - let bit_prefix = (code_point as usize) >> FAST_TYPE_SHIFT; - debug_assert!(bit_prefix < self.index.len()); - // SAFETY: Relying on the length invariant of `self.index` having - // been checked and on the unchangedness invariant of `self.index` - // and `self.header.trie_type` after construction. - let base_offset_to_data: usize = usize::from(u16::from_unaligned(*unsafe { - self.index.as_ule_slice().get_unchecked(bit_prefix) - })); - let bit_suffix = (code_point & FAST_TYPE_DATA_MASK) as usize; - // SAFETY: Cannot overflow with supported (32-bit and 64-bit) `usize` - // sizes, since `base_offset_to_data` was extended from `u16` and - // `bit_suffix` is at most `FAST_TYPE_DATA_MASK`, which is well - // under what it takes to reach the 32-bit (or 64-bit) max with - // additon from the max of `u16`. - let offset_to_data = w!(base_offset_to_data + bit_suffix); - debug_assert!(offset_to_data < self.data.len()); - // SAFETY: Relying on the length invariant of `self.data` having - // been checked and on the unchangedness invariant of `self.data`, - // `self.index`, and `self.header.trie_type` after construction. - T::from_unaligned(*unsafe { self.data.as_ule_slice().get_unchecked(offset_to_data) }) - } - - /// Coldness wrapper for `get32_by_small_index` to also allow - /// calls without the effects of `#[cold]`. - #[cold] - #[inline(always)] - fn get32_by_small_index_cold(&self, code_point: u32) -> T { - self.get32_by_small_index(code_point) - } - - /// Returns the value that is associated with `code_point` in this [`CodePointTrie`] - /// assuming that the small index path should be used. - /// - /// # Intended Precondition - /// - /// `code_point` must be at most `CODE_POINT_MAX` AND greter than - /// `FAST_TYPE_FAST_INDEXING_MAX` if the trie type is fast or greater - /// than `SMALL_TYPE_FAST_INDEXING_MAX` if the trie type is small. - /// This is checked when debug assertions are enabled. If this - /// precondition is violated, the behavior of this method is - /// memory-safe, but the returned value may be bogus (not - /// necessarily the designated error value). - #[inline(never)] - fn get32_by_small_index(&self, code_point: u32) -> T { - debug_assert!(code_point <= CODE_POINT_MAX); - debug_assert!( - code_point - > match self.header.trie_type { - TrieType::Fast => FAST_TYPE_FAST_INDEXING_MAX, - TrieType::Small => SMALL_TYPE_FAST_INDEXING_MAX, - } - ); - self.data - .get(self.small_index(code_point) as usize) - .unwrap_or(self.error_value) - } - - /// Returns the value that is associated with `code_point` in this [`CodePointTrie`]. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// let trie = planes::get_planes_trie(); - /// - /// assert_eq!(0, trie.get32(0x41)); // 'A' as u32 - /// assert_eq!(0, trie.get32(0x13E0)); // 'Ꮰ' as u32 - /// assert_eq!(1, trie.get32(0x10044)); // '𐁄' as u32 - /// ``` - #[inline(always)] // `always` based on normalizer benchmarking - pub fn get32(&self, code_point: u32) -> T { - if let Some(v) = self.get32_by_fast_index(code_point) { - v - } else if code_point <= CODE_POINT_MAX { - self.get32_by_small_index_cold(code_point) - } else { - self.error_value - } - } - - /// Returns the value that is associated with `char` in this [`CodePointTrie`]. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// let trie = planes::get_planes_trie(); - /// - /// assert_eq!(0, trie.get('A')); // 'A' as u32 - /// assert_eq!(0, trie.get('Ꮰ')); // 'Ꮰ' as u32 - /// assert_eq!(1, trie.get('𐁄')); // '𐁄' as u32 - /// ``` - #[inline(always)] - pub fn get(&self, c: char) -> T { - // LLVM's optimizations have been observed not to be 100% - // reliable around collapsing away unnecessary parts of - // `get32`, so not just calling `get32` here. - let code_point = u32::from(c); - if let Some(v) = self.get32_by_fast_index(code_point) { - v - } else { - self.get32_by_small_index_cold(code_point) - } - } - - /// Returns the value that is associated with `bmp` in this [`CodePointTrie`]. - #[inline(always)] - pub fn get16(&self, bmp: u16) -> T { - // LLVM's optimizations have been observed not to be 100% - // reliable around collapsing away unnecessary parts of - // `get32`, so not just calling `get32` here. - let code_point = u32::from(bmp); - if let Some(v) = self.get32_by_fast_index(code_point) { - v - } else { - self.get32_by_small_index_cold(code_point) - } - } - - /// Lookup trie value by non-Basic Multilingual Plane Scalar Value. - /// - /// The return value may be bogus (not necessarily `error_value`) is the argument is actually in - /// the Basic Multilingual Plane or above the Unicode Scalar Value - /// range (panics instead with debug assertions enabled). - #[inline(always)] - pub fn get32_supplementary(&self, supplementary: u32) -> T { - debug_assert!(supplementary > 0xFFFF); - debug_assert!(supplementary <= CODE_POINT_MAX); - self.get32_by_small_index(supplementary) - } - - /// Returns a reference to the ULE of the value that is associated with `code_point` in this [`CodePointTrie`]. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// let trie = planes::get_planes_trie(); - /// - /// assert_eq!(Some(&0), trie.get32_ule(0x41)); // 'A' as u32 - /// assert_eq!(Some(&0), trie.get32_ule(0x13E0)); // 'Ꮰ' as u32 - /// assert_eq!(Some(&1), trie.get32_ule(0x10044)); // '𐁄' as u32 - /// ``` - #[inline(always)] // `always` was based on previous normalizer benchmarking - pub fn get32_ule(&self, code_point: u32) -> Option<&T::ULE> { - // All code points up to the fast max limit are represented - // individually in the `index` array to hold their `data` array position, and - // thus only need 2 lookups for a [CodePointTrie::get()](`crate::codepointtrie::CodePointTrie::get`). - // Code points above the "fast max" limit require 4 lookups. - let fast_max = match self.header.trie_type { - TrieType::Fast => FAST_TYPE_FAST_INDEXING_MAX, - TrieType::Small => SMALL_TYPE_FAST_INDEXING_MAX, - }; - let data_pos: u32 = if code_point <= fast_max { - Self::fast_index(self, code_point) - } else if code_point <= CODE_POINT_MAX { - Self::small_index(self, code_point) - } else { - self.trie_error_val_index() - }; - // Returns the trie value (or trie's error value). - self.data.as_ule_slice().get(data_pos as usize) - } - - /// Converts the [`CodePointTrie`] into one that returns another type of the same size. - /// - /// Borrowed data remains borrowed, and owned data remains owned. - /// - /// If the old and new types are not the same size, use - /// [`CodePointTrie::try_alloc_map_value`]. - /// - /// # Panics - /// - /// Panics if `T` and `P` are different sizes. - /// - /// More specifically, panics if [`ZeroVec::try_into_converted()`] panics when converting - /// `ZeroVec` into `ZeroVec

`, which happens if `T::ULE` and `P::ULE` differ in size. - /// - /// ✨ *Enabled with the `alloc` Cargo feature.* - /// - /// # Examples - /// - /// ```no_run - /// use icu::collections::codepointtrie::planes; - /// use icu::collections::codepointtrie::CodePointTrie; - /// - /// let planes_trie_u8: CodePointTrie = planes::get_planes_trie(); - /// let planes_trie_i8: CodePointTrie = - /// planes_trie_u8.try_into_converted().expect("infallible"); - /// - /// assert_eq!(planes_trie_i8.get32(0x30000), 3); - /// ``` - #[cfg(feature = "alloc")] - pub fn try_into_converted

(self) -> Result, UleError> - where - P: TrieValue, - { - let converted_data = self.data.try_into_converted()?; - let error_ule = self.error_value.to_unaligned(); - let slice = &[error_ule]; - let error_vec = ZeroVec::::new_borrowed(slice); - let error_converted = error_vec.try_into_converted::

()?; - #[expect(clippy::expect_used)] // we know this cannot fail - Ok(CodePointTrie { - header: self.header, - index: self.index, - data: converted_data, - error_value: error_converted - .get(0) - .expect("vector known to have one element"), - }) - } - - /// Maps the [`CodePointTrie`] into one that returns a different type. - /// - /// This function returns owned data. - /// - /// If the old and new types are the same size, use the more efficient - /// [`CodePointTrie::try_into_converted`]. - /// - /// ✨ *Enabled with the `alloc` Cargo feature.* - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// use icu::collections::codepointtrie::CodePointTrie; - /// - /// let planes_trie_u8: CodePointTrie = planes::get_planes_trie(); - /// let planes_trie_u16: CodePointTrie = planes_trie_u8 - /// .try_alloc_map_value(TryFrom::try_from) - /// .expect("infallible"); - /// - /// assert_eq!(planes_trie_u16.get32(0x30000), 3); - /// ``` - #[cfg(feature = "alloc")] - pub fn try_alloc_map_value( - &self, - mut f: impl FnMut(T) -> Result, - ) -> Result, E> - where - P: TrieValue, - { - let error_converted = f(self.error_value)?; - let converted_data = self.data.iter().map(f).collect::, E>>()?; - Ok(CodePointTrie { - header: self.header, - index: self.index.clone(), - data: converted_data, - error_value: error_converted, - }) - } - - /// Returns a [`CodePointMapRange`] struct which represents a range of code - /// points associated with the same trie value. The returned range will be - /// the longest stretch of consecutive code points starting at `start` that - /// share this value. - /// - /// This method is designed to use the internal details of - /// the structure of [`CodePointTrie`] to be optimally efficient. This will - /// outperform a naive approach that just uses [`CodePointTrie::get()`]. - /// - /// This method provides lower-level functionality that can be used in the - /// implementation of other methods that are more convenient to the user. - /// To obtain an optimal partition of the code point space for - /// this trie resulting in the fewest number of ranges, see - /// [`CodePointTrie::iter_ranges()`]. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// - /// let trie = planes::get_planes_trie(); - /// - /// const CODE_POINT_MAX: u32 = 0x10ffff; - /// let start = 0x1_0000; - /// let exp_end = 0x1_ffff; - /// - /// let start_val = trie.get32(start); - /// assert_eq!(trie.get32(exp_end), start_val); - /// assert_ne!(trie.get32(exp_end + 1), start_val); - /// - /// use icu::collections::codepointtrie::CodePointMapRange; - /// - /// let cpm_range: CodePointMapRange = trie.get_range(start).unwrap(); - /// - /// assert_eq!(cpm_range.range.start(), &start); - /// assert_eq!(cpm_range.range.end(), &exp_end); - /// assert_eq!(cpm_range.value, start_val); - /// - /// // `start` can be any code point, whether or not it lies on the boundary - /// // of a maximally large range that still contains `start` - /// - /// let submaximal_1_start = start + 0x1234; - /// let submaximal_1 = trie.get_range(submaximal_1_start).unwrap(); - /// assert_eq!(submaximal_1.range.start(), &0x1_1234); - /// assert_eq!(submaximal_1.range.end(), &0x1_ffff); - /// assert_eq!(submaximal_1.value, start_val); - /// - /// let submaximal_2_start = start + 0xffff; - /// let submaximal_2 = trie.get_range(submaximal_2_start).unwrap(); - /// assert_eq!(submaximal_2.range.start(), &0x1_ffff); - /// assert_eq!(submaximal_2.range.end(), &0x1_ffff); - /// assert_eq!(submaximal_2.value, start_val); - /// ``` - pub fn get_range(&self, start: u32) -> Option> { - // Exit early if the start code point is out of range, or if it is - // in the last range of code points in high_start..=CODE_POINT_MAX - // (start- and end-inclusive) that all share the same trie value. - if CODE_POINT_MAX < start { - return None; - } - if start >= self.header.high_start { - let di: usize = self.data.len() - (HIGH_VALUE_NEG_DATA_OFFSET as usize); - let value: T = self.data.get(di)?; - return Some(CodePointMapRange { - range: start..=CODE_POINT_MAX, - value, - }); - } - - let null_value: T = T::try_from_u32(self.header.null_value).ok()?; - - let mut prev_i3_block: u32 = u32::MAX; // using u32::MAX (instead of -1 as an i32 in ICU) - let mut prev_block: u32 = u32::MAX; // using u32::MAX (instead of -1 as an i32 in ICU) - let mut c: u32 = start; - let mut trie_value: T = self.error_value(); - let mut value: T = self.error_value(); - let mut have_value: bool = false; - - loop { - let i3_block: u32; - let mut i3: u32; - let i3_block_length: u32; - let data_block_length: u32; - - // Initialize values before beginning the iteration in the subsequent - // `loop` block. In particular, use the "i3*" local variables - // (representing the `index` array position's offset + increment - // for a 3rd-level trie lookup) to help initialize the data block - // variable `block` in the loop for the `data` array. - // - // When a lookup code point is <= the trie's *_FAST_INDEXING_MAX that - // corresponds to its `trie_type`, the lookup only takes 2 steps - // (once into the `index`, once into the `data` array); otherwise, - // takes 4 steps (3 iterative lookups into the `index`, once more - // into the `data` array). So for convenience's sake, when we have the - // 2-stage lookup, reuse the "i3*" variable names for the first lookup. - if c <= 0xffff - && (self.header.trie_type == TrieType::Fast || c <= SMALL_TYPE_FAST_INDEXING_MAX) - { - i3_block = 0; - i3 = c >> FAST_TYPE_SHIFT; - i3_block_length = if self.header.trie_type == TrieType::Fast { - BMP_INDEX_LENGTH - } else { - SMALL_INDEX_LENGTH - }; - data_block_length = FAST_TYPE_DATA_BLOCK_LENGTH; - } else { - // Use the multi-stage index. - let mut i1: u32 = c >> SHIFT_1; - if self.header.trie_type == TrieType::Fast { - debug_assert!(0xffff < c && c < self.header.high_start); - i1 = i1 + BMP_INDEX_LENGTH - OMITTED_BMP_INDEX_1_LENGTH; - } else { - debug_assert!( - c < self.header.high_start && self.header.high_start > SMALL_LIMIT - ); - i1 += SMALL_INDEX_LENGTH; - } - let i2: u16 = self.index.get(i1 as usize)?; - let i3_block_idx: u32 = (i2 as u32) + ((c >> SHIFT_2) & INDEX_2_MASK); - i3_block = if let Some(i3b) = self.index.get(i3_block_idx as usize) { - i3b as u32 - } else { - return None; - }; - if i3_block == prev_i3_block && (c - start) >= CP_PER_INDEX_2_ENTRY { - // The index-3 block is the same as the previous one, and filled with value. - debug_assert!((c & (CP_PER_INDEX_2_ENTRY - 1)) == 0); - c += CP_PER_INDEX_2_ENTRY; - - if c >= self.header.high_start { - break; - } else { - continue; - } - } - prev_i3_block = i3_block; - if i3_block == self.header.index3_null_offset as u32 { - // This is the index-3 null block. - // All of the `data` array blocks pointed to by the values - // in this block of the `index` 3rd-stage subarray will - // contain this trie's null_value. So if we are in the middle - // of a range, end it and return early, otherwise start a new - // range of null values. - if have_value { - if null_value != value { - return Some(CodePointMapRange { - range: start..=(c - 1), - value, - }); - } - } else { - trie_value = T::try_from_u32(self.header.null_value).ok()?; - value = null_value; - have_value = true; - } - prev_block = self.header.data_null_offset; - c = (c + CP_PER_INDEX_2_ENTRY) & !(CP_PER_INDEX_2_ENTRY - 1); - - if c >= self.header.high_start { - break; - } else { - continue; - } - } - i3 = (c >> SHIFT_3) & INDEX_3_MASK; - i3_block_length = INDEX_3_BLOCK_LENGTH; - data_block_length = SMALL_DATA_BLOCK_LENGTH; - } - - // Enumerate data blocks for one index-3 block. - loop { - let mut block: u32; - if (i3_block & 0x8000) == 0 { - block = if let Some(b) = self.index.get((i3_block + i3) as usize) { - b as u32 - } else { - return None; - }; - } else { - // 18-bit indexes stored in groups of 9 entries per 8 indexes. - let mut group: u32 = (i3_block & 0x7fff) + (i3 & !7) + (i3 >> 3); - let gi: u32 = i3 & 7; - let gi_val: u32 = if let Some(giv) = self.index.get(group as usize) { - giv.into() - } else { - return None; - }; - block = (gi_val << (2 + (2 * gi))) & 0x30000; - group += 1; - let ggi_val: u32 = if let Some(ggiv) = self.index.get((group + gi) as usize) { - ggiv as u32 - } else { - return None; - }; - block |= ggi_val; - } - - // If our previous and current return values of the 3rd-stage `index` - // lookup yield the same `data` block offset, and if we already know that - // the entire `data` block / subarray starting at that offset stores - // `value` and nothing else, then we can extend our range by the length - // of a data block and continue. - // Otherwise, we have to iterate over the values stored in the - // new data block to see if they differ from `value`. - if block == prev_block && (c - start) >= data_block_length { - // The block is the same as the previous one, and filled with value. - debug_assert!((c & (data_block_length - 1)) == 0); - c += data_block_length; - } else { - let data_mask: u32 = data_block_length - 1; - prev_block = block; - if block == self.header.data_null_offset { - // This is the data null block. - // If we are in the middle of a range, end it and - // return early, otherwise start a new range of null - // values. - if have_value { - if null_value != value { - return Some(CodePointMapRange { - range: start..=(c - 1), - value, - }); - } - } else { - trie_value = T::try_from_u32(self.header.null_value).ok()?; - value = null_value; - have_value = true; - } - c = (c + data_block_length) & !data_mask; - } else { - let mut di: u32 = block + (c & data_mask); - let mut trie_value_2: T = self.data.get(di as usize)?; - if have_value { - if trie_value_2 != trie_value { - if maybe_filter_value( - trie_value_2, - T::try_from_u32(self.header.null_value).ok()?, - null_value, - ) != value - { - return Some(CodePointMapRange { - range: start..=(c - 1), - value, - }); - } - // `trie_value` stores the previous value that was retrieved - // from the trie. - // `value` stores the value associated for the range (return - // value) that we are currently building, which is computed - // as a transformation by applying maybe_filter_value() - // to the trie value. - // The current trie value `trie_value_2` within this data block - // differs here from the previous value in `trie_value`. - // But both map to `value` after applying `maybe_filter_value`. - // It is not clear whether the previous or the current trie value - // (or neither) is more likely to match potential subsequent trie - // values that would extend the range by mapping to `value`. - // On the assumption of locality -- often times consecutive - // characters map to the same trie values -- remembering the new - // one might make it faster to extend this range further - // (by increasing the chance that the next `trie_value_2 != - // trie_value` test will be false). - trie_value = trie_value_2; // may or may not help - } - } else { - trie_value = trie_value_2; - value = maybe_filter_value( - trie_value_2, - T::try_from_u32(self.header.null_value).ok()?, - null_value, - ); - have_value = true; - } - - c += 1; - while (c & data_mask) != 0 { - di += 1; - trie_value_2 = self.data.get(di as usize)?; - if trie_value_2 != trie_value { - if maybe_filter_value( - trie_value_2, - T::try_from_u32(self.header.null_value).ok()?, - null_value, - ) != value - { - return Some(CodePointMapRange { - range: start..=(c - 1), - value, - }); - } - // `trie_value` stores the previous value that was retrieved - // from the trie. - // `value` stores the value associated for the range (return - // value) that we are currently building, which is computed - // as a transformation by applying maybe_filter_value() - // to the trie value. - // The current trie value `trie_value_2` within this data block - // differs here from the previous value in `trie_value`. - // But both map to `value` after applying `maybe_filter_value`. - // It is not clear whether the previous or the current trie value - // (or neither) is more likely to match potential subsequent trie - // values that would extend the range by mapping to `value`. - // On the assumption of locality -- often times consecutive - // characters map to the same trie values -- remembering the new - // one might make it faster to extend this range further - // (by increasing the chance that the next `trie_value_2 != - // trie_value` test will be false). - trie_value = trie_value_2; // may or may not help - } - - c += 1; - } - } - } - - i3 += 1; - if i3 >= i3_block_length { - break; - } - } - - if c >= self.header.high_start { - break; - } - } - - debug_assert!(have_value); - - // Now that c >= high_start, compare `value` to `high_value` to see - // if we can merge our current range with the high_value range - // high_start..=CODE_POINT_MAX (start- and end-inclusive), otherwise - // stop at high_start - 1. - let di: u32 = self.data.len() as u32 - HIGH_VALUE_NEG_DATA_OFFSET; - let high_value: T = self.data.get(di as usize)?; - if maybe_filter_value( - high_value, - T::try_from_u32(self.header.null_value).ok()?, - null_value, - ) != value - { - c -= 1; - } else { - c = CODE_POINT_MAX; - } - Some(CodePointMapRange { - range: start..=c, - value, - }) - } - - /// Yields an [`Iterator`] returning ranges of consecutive code points that - /// share the same value in the [`CodePointTrie`], as given by - /// [`CodePointTrie::get_range()`]. - /// - /// # Examples - /// - /// ``` - /// use core::ops::RangeInclusive; - /// use icu::collections::codepointtrie::planes; - /// use icu::collections::codepointtrie::CodePointMapRange; - /// - /// let planes_trie = planes::get_planes_trie(); - /// - /// let mut ranges = planes_trie.iter_ranges(); - /// - /// for plane in 0..=16 { - /// let exp_start = plane * 0x1_0000; - /// let exp_end = exp_start + 0xffff; - /// assert_eq!( - /// ranges.next(), - /// Some(CodePointMapRange { - /// range: exp_start..=exp_end, - /// value: plane as u8 - /// }) - /// ); - /// } - /// - /// // Hitting the end of the iterator returns `None`, as will subsequent - /// // calls to .next(). - /// assert_eq!(ranges.next(), None); - /// assert_eq!(ranges.next(), None); - /// ``` - pub fn iter_ranges(&self) -> CodePointMapRangeIterator<'_, T> { - let init_range = Some(CodePointMapRange { - range: u32::MAX..=u32::MAX, - value: self.error_value(), - }); - CodePointMapRangeIterator:: { - cpt: self, - cpm_range: init_range, - } - } - - /// Yields an [`Iterator`] returning the ranges of the code points whose values - /// match `value` in the [`CodePointTrie`]. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// - /// let trie = planes::get_planes_trie(); - /// - /// let plane_val = 2; - /// let mut sip_range_iter = trie.iter_ranges_for_value(plane_val as u8); - /// - /// let start = plane_val * 0x1_0000; - /// let end = start + 0xffff; - /// - /// let sip_range = sip_range_iter.next() - /// .expect("Plane 2 (SIP) should exist in planes data"); - /// assert_eq!(start..=end, sip_range); - /// - /// assert!(sip_range_iter.next().is_none()); - pub fn iter_ranges_for_value( - &self, - value: T, - ) -> impl Iterator> + '_ { - self.iter_ranges() - .filter(move |cpm_range| cpm_range.value == value) - .map(|cpm_range| cpm_range.range) - } - - /// Yields an [`Iterator`] returning the ranges of the code points after passing - /// the value through a mapping function. - /// - /// This is preferable to calling `.get_ranges().map()` since it will coalesce - /// adjacent ranges into one. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// - /// let trie = planes::get_planes_trie(); - /// - /// let plane_val = 2; - /// let mut sip_range_iter = trie.iter_ranges_mapped(|value| value != plane_val as u8).filter(|range| range.value); - /// - /// let end = plane_val * 0x1_0000 - 1; - /// - /// let sip_range = sip_range_iter.next() - /// .expect("Complemented planes data should have at least one entry"); - /// assert_eq!(0..=end, sip_range.range); - pub fn iter_ranges_mapped<'a, U: Eq + 'a>( - &'a self, - mut map: impl FnMut(T) -> U + Copy + 'a, - ) -> impl Iterator> + 'a { - crate::iterator_utils::RangeListIteratorCoalescer::new(self.iter_ranges().map( - move |range| CodePointMapRange { - range: range.range, - value: map(range.value), - }, - )) - } - - /// Returns a [`CodePointInversionList`] for the code points that have the given - /// [`TrieValue`] in the trie. - /// - /// ✨ *Enabled with the `alloc` Cargo feature.* - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// - /// let trie = planes::get_planes_trie(); - /// - /// let plane_val = 2; - /// let sip = trie.get_set_for_value(plane_val as u8); - /// - /// let start = plane_val * 0x1_0000; - /// let end = start + 0xffff; - /// - /// assert!(!sip.contains32(start - 1)); - /// assert!(sip.contains32(start)); - /// assert!(sip.contains32(end)); - /// assert!(!sip.contains32(end + 1)); - /// ``` - #[cfg(feature = "alloc")] - pub fn get_set_for_value(&self, value: T) -> CodePointInversionList<'static> { - let value_ranges = self.iter_ranges_for_value(value); - CodePointInversionList::from_iter(value_ranges) - } - - /// Returns the value used as an error value for this trie - #[inline] - pub fn error_value(&self) -> T { - self.error_value - } -} - -#[cfg(feature = "databake")] -impl databake::Bake for CodePointTrie<'_, T> { - fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream { - let header = self.header.bake(env); - let index = self.index.bake(env); - let data = self.data.bake(env); - let error_value = self.error_value.bake(env); - databake::quote! { unsafe { icu_collections::codepointtrie::CodePointTrie::from_parts_unstable_unchecked_v1(#header, #index, #data, #error_value) } } - } -} - -#[cfg(feature = "databake")] -impl databake::BakeSize for CodePointTrie<'_, T> { - fn borrows_size(&self) -> usize { - self.header.borrows_size() + self.index.borrows_size() + self.data.borrows_size() - } -} - -impl> CodePointTrie<'_, T> { - /// Returns the value that is associated with `code_point` for this [`CodePointTrie`] - /// as a `u32`. - /// - /// # Examples - /// - /// ``` - /// use icu::collections::codepointtrie::planes; - /// let trie = planes::get_planes_trie(); - /// - /// let cp = '𑖎' as u32; - /// assert_eq!(cp, 0x1158E); - /// - /// let plane_num: u8 = trie.get32(cp); - /// assert_eq!(trie.get32_u32(cp), plane_num as u32); - /// ``` - // Note: This API method maintains consistency with the corresponding - // original ICU APIs. - pub fn get32_u32(&self, code_point: u32) -> u32 { - self.get32(code_point).into() - } -} - -impl Clone for CodePointTrie<'_, T> -where - ::ULE: Clone, -{ - fn clone(&self) -> Self { - CodePointTrie { - header: self.header, - index: self.index.clone(), - data: self.data.clone(), - error_value: self.error_value, - } - } -} - -/// Represents a range of consecutive code points sharing the same value in a -/// code point map. -/// -/// The start and end of the interval is represented as a -/// `RangeInclusive`, and the value is represented as `T`. -#[derive(PartialEq, Eq, Debug, Clone)] -#[allow(clippy::exhaustive_structs)] // based on a stable serialized form -pub struct CodePointMapRange { - /// Range of code points from start to end (inclusive). - pub range: RangeInclusive, - /// Trie value associated with this range. - pub value: T, -} - -/// A custom [`Iterator`] type specifically for a code point trie that returns -/// [`CodePointMapRange`]s. -#[derive(Debug)] -pub struct CodePointMapRangeIterator<'a, T: TrieValue> { - cpt: &'a CodePointTrie<'a, T>, - // Initialize `range` to Some(CodePointMapRange{ start: u32::MAX, end: u32::MAX, value: 0}). - // When `range` is Some(...) and has a start value different from u32::MAX, then we have - // returned at least one code point range due to a call to `next()`. - // When `range` == `None`, it means that we have hit the end of iteration. It would occur - // after a call to `next()` returns a None <=> we attempted to call `get_range()` - // with a start code point that is > CODE_POINT_MAX. - cpm_range: Option>, -} - -impl Iterator for CodePointMapRangeIterator<'_, T> { - type Item = CodePointMapRange; - - fn next(&mut self) -> Option { - self.cpm_range = match &self.cpm_range { - Some(cpmr) => { - if *cpmr.range.start() == u32::MAX { - self.cpt.get_range(0) - } else { - self.cpt.get_range(cpmr.range.end() + 1) - } - } - None => None, - }; - // Note: Clone is cheap. We can't Copy because RangeInclusive does not impl Copy. - self.cpm_range.clone() - } -} - -/// For sealing `TypedCodePointTrie` -/// -/// # Safety Usable Invariant -/// -/// All implementations of `TypedCodePointTrie` are reviewable in this module. -trait Seal {} - -/// Trait for writing trait bounds for monomorphizing over either -/// `FastCodePointTrie` or `SmallCodePointTrie`. -#[allow(private_bounds)] // Permit sealing -pub trait TypedCodePointTrie<'trie, T: TrieValue>: Seal { - /// The `TrieType` associated with this `TypedCodePointTrie` - /// - /// # Safety Usable Invariant - /// - /// This constant matches `self.as_untyped_ref().header.trie_type`. - const TRIE_TYPE: TrieType; - - /// Lookup trie value as `u32` by Unicode Scalar Value without branching on trie type. - #[inline(always)] - fn get32_u32(&self, code_point: u32) -> u32 { - self.get32(code_point).to_u32() - } - - /// Lookup trie value by Basic Multilingual Plane Code Point without branching on trie type. - #[inline(always)] - fn get16(&self, bmp: u16) -> T { - // LLVM's optimizations have been observed not to be 100% - // reliable around collapsing away unnecessary parts of - // `get32`, so not just calling `get32` here. - let code_point = u32::from(bmp); - if let Some(v) = self.get32_by_fast_index(code_point) { - v - } else { - self.as_untyped_ref().get32_by_small_index_cold(code_point) - } - } - - /// Lookup trie value by non-Basic Multilingual Plane Scalar Value without branching on trie type. - #[inline(always)] - fn get32_supplementary(&self, supplementary: u32) -> T { - self.as_untyped_ref().get32_supplementary(supplementary) - } - - /// Lookup trie value by Unicode Scalar Value without branching on trie type. - #[inline(always)] - fn get(&self, c: char) -> T { - // LLVM's optimizations have been observed not to be 100% - // reliable around collapsing away unnecessary parts of - // `get32`, so not just calling `get32` here. - let code_point = u32::from(c); - if let Some(v) = self.get32_by_fast_index(code_point) { - v - } else { - self.as_untyped_ref().get32_by_small_index_cold(code_point) - } - } - - /// Lookup trie value by Unicode Code Point without branching on trie type. - #[inline(always)] - fn get32(&self, code_point: u32) -> T { - if let Some(v) = self.get32_by_fast_index(code_point) { - v - } else if code_point <= CODE_POINT_MAX { - self.as_untyped_ref().get32_by_small_index_cold(code_point) - } else { - self.as_untyped_ref().error_value - } - } - - /// Returns the value that is associated with `code_point` in this [`CodePointTrie`] - /// if `code_point` uses fast-path lookup or `None` if `code_point` - /// should use small-path lookup or is above the supported range. - #[inline(always)] // "always" to make the `Option` collapse away - fn get32_by_fast_index(&self, code_point: u32) -> Option { - debug_assert_eq!(Self::TRIE_TYPE, self.as_untyped_ref().header.trie_type); - let fast_max = match Self::TRIE_TYPE { - TrieType::Fast => FAST_TYPE_FAST_INDEXING_MAX, - TrieType::Small => SMALL_TYPE_FAST_INDEXING_MAX, - }; - if code_point <= fast_max { - // SAFETY: We just checked the invariant of - // `get32_assuming_fast_index`, - // which is - // "If `self.header.trie_type == TrieType::Small`, `code_point` must be at most - // `SMALL_TYPE_FAST_INDEXING_MAX`. If `self.header.trie_type == - // TrieType::Fast`, `code_point` must be at most `FAST_TYPE_FAST_INDEXING_MAX`." - // ... assuming that `Self::TRIE_TYPE` always matches - // `self.as_untyped_ref().header.trie_type`, i.e. we're relying on - // `CodePointTrie::to_typed` and `CodePointTrie::as_typed_ref` being correct - // and the exclusive ways of obtaining `Self`. - Some(unsafe { self.as_untyped_ref().get32_assuming_fast_index(code_point) }) - } else { - // The caller needs to call `get32_by_small_index` or determine - // that the argument is above the permitted range. - None - } - } - - /// Returns a reference to the wrapped `CodePointTrie`. - fn as_untyped_ref(&self) -> &CodePointTrie<'trie, T>; - - /// Extracts the wrapped `CodePointTrie`. - fn to_untyped(self) -> CodePointTrie<'trie, T>; -} - -/// Type-safe wrapper for a fast trie guaranteeing -/// the the getters don't branch on the trie type -/// and for guarenteeing that `get16` is branchless -/// in release builds. -#[derive(Debug)] -#[repr(transparent)] -pub struct FastCodePointTrie<'trie, T: TrieValue> { - inner: CodePointTrie<'trie, T>, -} - -impl<'trie, T: TrieValue> TypedCodePointTrie<'trie, T> for FastCodePointTrie<'trie, T> { - const TRIE_TYPE: TrieType = TrieType::Fast; - - /// Returns a reference to the wrapped `CodePointTrie`. - #[inline(always)] - fn as_untyped_ref(&self) -> &CodePointTrie<'trie, T> { - &self.inner - } - - /// Extracts the wrapped `CodePointTrie`. - #[inline(always)] - fn to_untyped(self) -> CodePointTrie<'trie, T> { - self.inner - } - - /// Lookup trie value by Basic Multilingual Plane Code Point without branching on trie type. - #[inline(always)] - fn get16(&self, bmp: u16) -> T { - debug_assert!(u32::from(u16::MAX) <= FAST_TYPE_FAST_INDEXING_MAX); - debug_assert_eq!(Self::TRIE_TYPE, TrieType::Fast); - debug_assert_eq!(self.as_untyped_ref().header.trie_type, TrieType::Fast); - let code_point = u32::from(bmp); - // SAFETY: With `TrieType::Fast`, the `u16` range satisfies - // the invariant of `get32_assuming_fast_index`, which is - // "If `self.header.trie_type == TrieType::Small`, `code_point` must be at most - // `SMALL_TYPE_FAST_INDEXING_MAX`. If `self.header.trie_type == - // TrieType::Fast`, `code_point` must be at most `FAST_TYPE_FAST_INDEXING_MAX`." - // - // We're relying on `CodePointTrie::to_typed` and `CodePointTrie::as_typed_ref` - // being correct and the exclusive ways of obtaining `Self`. - unsafe { self.as_untyped_ref().get32_assuming_fast_index(code_point) } - } -} - -impl<'trie, T: TrieValue> Seal for FastCodePointTrie<'trie, T> {} - -impl<'trie, T: TrieValue> TryFrom<&'trie CodePointTrie<'trie, T>> - for &'trie FastCodePointTrie<'trie, T> -{ - type Error = TypedCodePointTrieError; - - fn try_from( - reference: &'trie CodePointTrie<'trie, T>, - ) -> Result<&'trie FastCodePointTrie<'trie, T>, TypedCodePointTrieError> { - match reference.as_typed_ref() { - Typed::Fast(trie) => Ok(trie), - Typed::Small(_) => Err(TypedCodePointTrieError), - } - } -} - -impl<'trie, T: TrieValue> TryFrom> for FastCodePointTrie<'trie, T> { - type Error = TypedCodePointTrieError; - - fn try_from( - value: CodePointTrie<'trie, T>, - ) -> Result, TypedCodePointTrieError> { - match value.to_typed() { - Typed::Fast(trie) => Ok(trie), - Typed::Small(_) => Err(TypedCodePointTrieError), - } - } -} - -/// Type-safe wrapper for a small trie guaranteeing -/// the the getters don't branch on the trie type. -#[derive(Debug)] -#[repr(transparent)] -pub struct SmallCodePointTrie<'trie, T: TrieValue> { - inner: CodePointTrie<'trie, T>, -} - -impl<'trie, T: TrieValue> TypedCodePointTrie<'trie, T> for SmallCodePointTrie<'trie, T> { - const TRIE_TYPE: TrieType = TrieType::Small; - - /// Returns a reference to the wrapped `CodePointTrie`. - #[inline(always)] - fn as_untyped_ref(&self) -> &CodePointTrie<'trie, T> { - &self.inner - } - - /// Extracts the wrapped `CodePointTrie`. - #[inline(always)] - fn to_untyped(self) -> CodePointTrie<'trie, T> { - self.inner - } -} - -impl<'trie, T: TrieValue> Seal for SmallCodePointTrie<'trie, T> {} - -impl<'trie, T: TrieValue> TryFrom<&'trie CodePointTrie<'trie, T>> - for &'trie SmallCodePointTrie<'trie, T> -{ - type Error = TypedCodePointTrieError; - - fn try_from( - reference: &'trie CodePointTrie<'trie, T>, - ) -> Result<&'trie SmallCodePointTrie<'trie, T>, TypedCodePointTrieError> { - match reference.as_typed_ref() { - Typed::Fast(_) => Err(TypedCodePointTrieError), - Typed::Small(trie) => Ok(trie), - } - } -} - -impl<'trie, T: TrieValue> TryFrom> for SmallCodePointTrie<'trie, T> { - type Error = TypedCodePointTrieError; - - fn try_from( - value: CodePointTrie<'trie, T>, - ) -> Result, TypedCodePointTrieError> { - match value.to_typed() { - Typed::Fast(_) => Err(TypedCodePointTrieError), - Typed::Small(trie) => Ok(trie), - } - } -} - -/// Error indicating that the `TrieType` of an untyped trie -/// does not match the requested typed trie type. -#[derive(Debug)] -#[non_exhaustive] -pub struct TypedCodePointTrieError; - -/// Holder for either fast or small trie with the trie -/// type encoded into the Rust type. -#[allow(clippy::exhaustive_enums)] -#[derive(Debug)] -pub enum Typed { - /// The trie type is fast. - Fast(F), - /// The trie type is small. - Small(S), -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::codepointtrie::planes; - use alloc::vec::Vec; - - #[test] - #[cfg(feature = "serde")] - fn test_serde_with_postcard_roundtrip() -> Result<(), postcard::Error> { - let trie = planes::get_planes_trie(); - let trie_serialized: Vec = postcard::to_allocvec(&trie).unwrap(); - - // Assert an expected (golden data) version of the serialized trie. - const EXP_TRIE_SERIALIZED: &[u8] = &[ - 128, 128, 64, 128, 2, 2, 0, 0, 1, 160, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, - 2, 144, 2, 144, 2, 144, 2, 176, 2, 176, 2, 176, 2, 176, 2, 208, 2, 208, 2, 208, 2, 208, - 2, 240, 2, 240, 2, 240, 2, 240, 2, 16, 3, 16, 3, 16, 3, 16, 3, 48, 3, 48, 3, 48, 3, 48, - 3, 80, 3, 80, 3, 80, 3, 80, 3, 112, 3, 112, 3, 112, 3, 112, 3, 144, 3, 144, 3, 144, 3, - 144, 3, 176, 3, 176, 3, 176, 3, 176, 3, 208, 3, 208, 3, 208, 3, 208, 3, 240, 3, 240, 3, - 240, 3, 240, 3, 16, 4, 16, 4, 16, 4, 16, 4, 48, 4, 48, 4, 48, 4, 48, 4, 80, 4, 80, 4, - 80, 4, 80, 4, 112, 4, 112, 4, 112, 4, 112, 4, 0, 0, 16, 0, 32, 0, 48, 0, 64, 0, 80, 0, - 96, 0, 112, 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, - 0, 48, 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, 0, 48, - 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, 0, 48, 0, 128, 0, 128, 0, 128, 0, 128, - 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, - 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, - 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, - 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, - 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, - 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, - 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, - 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, - 0, 160, 0, 160, 0, 160, 0, 160, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, - 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, - 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, - 0, 176, 0, 176, 0, 176, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, - 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, - 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, - 0, 192, 0, 192, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, - 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, - 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, - 0, 208, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, - 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, - 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, - 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, - 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, - 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 0, - 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, - 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, - 1, 0, 1, 0, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, - 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, - 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 32, 1, 32, 1, 32, 1, - 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, - 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, - 32, 1, 32, 1, 32, 1, 32, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, - 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, - 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 64, 1, 64, - 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, - 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, - 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, - 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, - 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, - 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, - 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, - 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 128, 0, 136, 0, 136, 0, 136, 0, 136, - 0, 136, 0, 136, 0, 136, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, - 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, - 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, - 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, - 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, - 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, - 200, 0, 200, 0, 200, 0, 200, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, - 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, - 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, - 232, 0, 232, 0, 232, 0, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, - 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, - 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, - 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, - 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, - 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, - 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, - 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 104, 1, 104, 1, 104, 1, 104, 1, - 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, - 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, - 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, - 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, - 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, - 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, - 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, - 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, - 168, 1, 168, 1, 168, 1, 168, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, - 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, - 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, - 200, 1, 200, 1, 200, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, - 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, - 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, - 232, 1, 232, 1, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, - 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, - 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, - 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, - 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 72, - 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, - 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, - 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, - 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, - 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, - 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 244, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 0, - ]; - assert_eq!(trie_serialized, EXP_TRIE_SERIALIZED); - - let trie_deserialized = postcard::from_bytes::>(&trie_serialized)?; - - assert_eq!(&trie.index, &trie_deserialized.index); - assert_eq!(&trie.data, &trie_deserialized.data); - - assert!(!trie_deserialized.index.is_owned()); - assert!(!trie_deserialized.data.is_owned()); - - Ok(()) - } - - #[test] - fn test_typed() { - let untyped = planes::get_planes_trie(); - assert_eq!(untyped.get('\u{10000}'), 1); - let small_ref = <&SmallCodePointTrie<_>>::try_from(&untyped).unwrap(); - assert_eq!(small_ref.get('\u{10000}'), 1); - let _ = <&FastCodePointTrie<_>>::try_from(&untyped).is_err(); - let small = >::try_from(untyped).unwrap(); - assert_eq!(small.get('\u{10000}'), 1); - } - - #[test] - fn test_get_range() { - let planes_trie = planes::get_planes_trie(); - - let first_range: Option> = planes_trie.get_range(0x0); - assert_eq!( - first_range, - Some(CodePointMapRange { - range: 0x0..=0xffff, - value: 0 - }) - ); - - let second_range: Option> = planes_trie.get_range(0x1_0000); - assert_eq!( - second_range, - Some(CodePointMapRange { - range: 0x10000..=0x1ffff, - value: 1 - }) - ); - - let penultimate_range: Option> = planes_trie.get_range(0xf_0000); - assert_eq!( - penultimate_range, - Some(CodePointMapRange { - range: 0xf_0000..=0xf_ffff, - value: 15 - }) - ); - - let last_range: Option> = planes_trie.get_range(0x10_0000); - assert_eq!( - last_range, - Some(CodePointMapRange { - range: 0x10_0000..=0x10_ffff, - value: 16 - }) - ); - } - - #[test] - #[allow(unused_unsafe)] // `unsafe` below is both necessary and unnecessary - fn databake() { - databake::test_bake!( - CodePointTrie<'static, u32>, - const, - unsafe { - crate::codepointtrie::CodePointTrie::from_parts_unstable_unchecked_v1( - crate::codepointtrie::CodePointTrieHeader { - high_start: 1u32, - shifted12_high_start: 2u16, - index3_null_offset: 3u16, - data_null_offset: 4u32, - null_value: 5u32, - trie_type: crate::codepointtrie::TrieType::Small, - }, - zerovec::ZeroVec::new(), - zerovec::ZeroVec::new(), - 0u32, - ) - }, - icu_collections, - [zerovec], - ); - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/error.rs b/deps/crates/vendor/icu_collections-v2/src/codepointtrie/error.rs deleted file mode 100644 index 383949d95611..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/error.rs +++ /dev/null @@ -1,30 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! Custom error type(s) for the parent module. - -use displaydoc::Display; - -/// A custom error type for [`CodePointTrie`](super::CodePointTrie). -#[derive(Copy, Clone, Display, Debug, PartialEq)] -#[non_exhaustive] -pub enum Error { - /// Could not construct [`CodePointTrie`](super::CodePointTrie) from deserialized values - #[displaydoc("Could not construct CodePointTrie from deserialized values: {reason}")] - FromDeserialized { - /// Reason for inability to deserialize values. - reason: &'static str, - }, - /// [`CodePointTrie`](super::CodePointTrie) must be constructed from data vector with at least one element - #[displaydoc("CodePointTrie must be constructed from data vector with at least one element")] - EmptyDataVector, - /// [`CodePointTrie`](super::CodePointTrie) must be constructed from index vector long enough to accommodate fast-path access - #[displaydoc("CodePointTrie must be constructed from index vector long enough to accommodate fast-path access")] - IndexTooShortForFastAccess, - /// [`CodePointTrie`](super::CodePointTrie) must be constructed from data vector long enough to accommodate fast-path access - #[displaydoc("CodePointTrie must be constructed from data vector long enough to accommodate fast-path access")] - DataTooShortForFastAccess, -} - -impl core::error::Error for Error {} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/impl_const.rs b/deps/crates/vendor/icu_collections-v2/src/codepointtrie/impl_const.rs deleted file mode 100644 index 61e4f2746ded..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/impl_const.rs +++ /dev/null @@ -1,76 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -pub const FAST_TYPE_SHIFT: i32 = 6; - -/// Number of entries in a data block for code points below the fast limit. 64=0x40 -pub const FAST_TYPE_DATA_BLOCK_LENGTH: u32 = 1 << FAST_TYPE_SHIFT; - -/// Mask for getting the lower bits for the in-fast-data-block offset. -pub const FAST_TYPE_DATA_MASK: u32 = FAST_TYPE_DATA_BLOCK_LENGTH - 1; - -/// Fast indexing limit for "fast"-type trie -pub const FAST_TYPE_FAST_INDEXING_MAX: u32 = 0xffff; - -/// Fast indexing limit for "small"-type trie -pub const SMALL_TYPE_FAST_INDEXING_MAX: u32 = 0xfff; - -/// Offset from dataLength (to be subtracted) for fetching the -/// value returned for out-of-range code points and ill-formed UTF-8/16. -pub const ERROR_VALUE_NEG_DATA_OFFSET: u32 = 1; - -/// Offset from dataLength (to be subtracted) for fetching the -/// value returned for code points highStart..U+10FFFF. -pub const HIGH_VALUE_NEG_DATA_OFFSET: u32 = 2; - -/// The length of the BMP index table. 1024=0x400 -pub const BMP_INDEX_LENGTH: u32 = 0x10000 >> FAST_TYPE_SHIFT; - -pub const SMALL_LIMIT: u32 = 0x1000; - -pub const SMALL_INDEX_LENGTH: u32 = SMALL_LIMIT >> FAST_TYPE_SHIFT; - -/// Shift size for getting the index-3 table offset. -pub const SHIFT_3: u32 = 4; - -/// Shift size for getting the index-2 table offset. -pub const SHIFT_2: u32 = 5 + SHIFT_3; - -/// Shift size for getting the index-1 table offset. -pub const SHIFT_1: u32 = 5 + SHIFT_2; - -/// Difference between two shift sizes, -/// for getting an index-2 offset from an index-3 offset. 5=9-4 -pub const SHIFT_2_3: u32 = SHIFT_2 - SHIFT_3; - -/// Difference between two shift sizes, -/// for getting an index-1 offset from an index-2 offset. 5=14-9 -pub const SHIFT_1_2: u32 = SHIFT_1 - SHIFT_2; - -/// Number of index-1 entries for the BMP. (4) -/// This part of the index-1 table is omitted from the serialized form. -pub const OMITTED_BMP_INDEX_1_LENGTH: u32 = 0x10000 >> SHIFT_1; - -/// Number of entries in an index-2 block. 32=0x20 -pub const INDEX_2_BLOCK_LENGTH: u32 = 1 << SHIFT_1_2; - -/// Mask for getting the lower bits for the in-index-2-block offset. -pub const INDEX_2_MASK: u32 = INDEX_2_BLOCK_LENGTH - 1; - -/// Number of code points per index-2 table entry. 512=0x200 -pub const CP_PER_INDEX_2_ENTRY: u32 = 1 << SHIFT_2; - -/// Number of entries in an index-3 block. 32=0x20 -pub const INDEX_3_BLOCK_LENGTH: u32 = 1 << SHIFT_2_3; - -/// Mask for getting the lower bits for the in-index-3-block offset. -pub const INDEX_3_MASK: u32 = INDEX_3_BLOCK_LENGTH - 1; - -/// Number of entries in a small data block. 16=0x10 -pub const SMALL_DATA_BLOCK_LENGTH: u32 = 1 << SHIFT_3; - -/// Mask for getting the lower bits for the in-small-data-block offset. -pub const SMALL_DATA_MASK: u32 = SMALL_DATA_BLOCK_LENGTH - 1; - -pub const CODE_POINT_MAX: u32 = 0x10ffff; diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/mod.rs b/deps/crates/vendor/icu_collections-v2/src/codepointtrie/mod.rs deleted file mode 100644 index dfc5a29ffc21..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/mod.rs +++ /dev/null @@ -1,53 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! This module provides a data structure for an time-efficient lookup of values -//! associated to code points. -//! -//! It is an implementation of the existing [ICU4C UCPTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/ucptrie_8h.html) -//! / [ICU4J CodePointTrie](https://unicode-org.github.io/icu-docs/apidoc/dev/icu4j/) API. -//! -//! # Architecture -//! -//! ICU4X [`CodePointTrie`] is designed to provide a read-only view of [`CodePointTrie`] data that is exported -//! from ICU4C. Detailed information about the design of the data structure can be found in the documentation -//! for the [`CodePointTrie`] struct. -//! -//! # Examples -//! -//! ## Querying a `CodePointTrie` -//! -//! ``` -//! use icu::collections::codepointtrie::planes; -//! let trie = planes::get_planes_trie(); -//! -//! assert_eq!(0, trie.get32(0x41)); // 'A' as u32 -//! assert_eq!(0, trie.get32(0x13E0)); // 'Ꮰ' as u32 -//! assert_eq!(1, trie.get32(0x10044)); // '𐁄' as u32 -//! ``` -//! -//! [`ICU4X`]: ../icu/index.html - -mod cptrie; -mod error; -mod impl_const; -pub mod planes; - -#[cfg(feature = "serde")] -pub mod toml; - -#[cfg(feature = "serde")] -mod serde; - -pub use cptrie::CodePointMapRange; -pub use cptrie::CodePointMapRangeIterator; -pub use cptrie::CodePointTrie; -pub use cptrie::CodePointTrieHeader; -pub use cptrie::FastCodePointTrie; -pub use cptrie::SmallCodePointTrie; -pub use cptrie::TrieType; -pub use cptrie::TrieValue; -pub use cptrie::Typed; -pub use cptrie::TypedCodePointTrie; -pub use error::Error as CodePointTrieError; diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/planes.rs b/deps/crates/vendor/icu_collections-v2/src/codepointtrie/planes.rs deleted file mode 100644 index a806632992fe..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/planes.rs +++ /dev/null @@ -1,296 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! Sample data for [`CodePointTrie`] that returns the code point's plane number. - -use crate::codepointtrie::cptrie::*; -use zerovec::ZeroVec; - -const INDEX_ARRAY_AS_BYTES: &[u8] = &[ - 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88, 0x2, 0x90, 0x2, - 0x90, 0x2, 0x90, 0x2, 0xb0, 0x2, 0xb0, 0x2, 0xb0, 0x2, 0xb0, 0x2, 0xd0, 0x2, 0xd0, 0x2, 0xd0, - 0x2, 0xd0, 0x2, 0xf0, 0x2, 0xf0, 0x2, 0xf0, 0x2, 0xf0, 0x2, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, - 0x10, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, - 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, - 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xf0, - 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0x10, 0x4, 0x10, 0x4, 0x10, 0x4, 0x10, 0x4, 0x30, 0x4, - 0x30, 0x4, 0x30, 0x4, 0x30, 0x4, 0x50, 0x4, 0x50, 0x4, 0x50, 0x4, 0x50, 0x4, 0x70, 0x4, 0x70, - 0x4, 0x70, 0x4, 0x70, 0x4, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x40, 0x0, 0x50, 0x0, - 0x60, 0x0, 0x70, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, - 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, - 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, - 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, - 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, - 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, - 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, - 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x90, 0x0, 0x90, 0x0, - 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, - 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, - 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, - 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, - 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, - 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, - 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, - 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, - 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, - 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, - 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, - 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, - 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, - 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, - 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xd0, 0x0, 0xd0, - 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, - 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, - 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, - 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, - 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, - 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, - 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, - 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, - 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, - 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, - 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, - 0xf0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, - 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, - 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, - 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, - 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, - 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, - 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, - 0x10, 0x1, 0x10, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, - 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, - 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, - 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, - 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, - 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, - 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, - 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x40, 0x1, 0x40, 0x1, - 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, - 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, - 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, - 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, - 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, - 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, - 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, - 0x1, 0x50, 0x1, 0x50, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, - 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, - 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, - 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, - 0x1, 0x80, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, - 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, - 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, - 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, - 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, - 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, - 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, - 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, - 0xa8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, - 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, - 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, - 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xe8, 0x0, - 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, - 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, - 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, - 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, - 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, - 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, - 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, - 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, - 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, - 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, - 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x48, 0x1, 0x48, 0x1, - 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, - 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, - 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, - 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, - 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, - 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, - 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, - 0x1, 0x68, 0x1, 0x68, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, - 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, - 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, - 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, - 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, - 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, - 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, - 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xc8, 0x1, 0xc8, - 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, - 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, - 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, - 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, - 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, - 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, - 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, - 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, - 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, - 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, - 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x28, 0x2, 0x28, 0x2, - 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, - 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, - 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, - 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, - 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, - 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, - 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, - 0x2, 0x48, 0x2, 0x48, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, - 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, - 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, - 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, - 0x2, -]; - -/// Return a [`CodePointTrie`] that returns the Unicode plane number, an -/// integer from 0-16 inclusive, for each code point. -/// -/// This `CodePointTrie` -/// does not actually represent any Unicode property, but it is provided in -/// case it is useful to users of `CodePointTrie` for testing or other -/// purposes. See . -pub fn get_planes_trie() -> CodePointTrie<'static, u8> { - let index_array_as_bytes: &[u8] = INDEX_ARRAY_AS_BYTES; - let data_8_array: &[u8] = &[ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xb, - 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xc, 0xc, 0xc, - 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xd, 0xd, 0xd, 0xd, 0xd, - 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, - 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, - 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x10, 0x10, 0x10, 0, - ]; - #[expect(clippy::unwrap_used)] // valid bytes - let index: ZeroVec = ZeroVec::parse_bytes(index_array_as_bytes).unwrap(); - #[expect(clippy::unwrap_used)] // valid bytes - let data: ZeroVec = ZeroVec::parse_bytes(data_8_array).unwrap(); - let high_start = 0x100000; - let shifted12_high_start = 0x100; - let index3_null_offset = 0x2; - let data_null_offset = 0x0; - let null_value = 0x0; - let trie_type = TrieType::Small; - - let trie_header = CodePointTrieHeader { - high_start, - shifted12_high_start, - index3_null_offset, - data_null_offset, - null_value, - trie_type, - }; - - #[expect(clippy::unwrap_used)] // valid data - CodePointTrie::try_new(trie_header, index, data).unwrap() -} - -#[cfg(test)] -mod tests { - use zerovec::ZeroVec; - - const INDEX_ARRAY: &[u16] = &[ - 0, 0x40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0x288, 0x290, 0x290, 0x290, 0x2b0, 0x2b0, 0x2b0, 0x2b0, 0x2d0, 0x2d0, 0x2d0, - 0x2d0, 0x2f0, 0x2f0, 0x2f0, 0x2f0, 0x310, 0x310, 0x310, 0x310, 0x330, 0x330, 0x330, 0x330, - 0x350, 0x350, 0x350, 0x350, 0x370, 0x370, 0x370, 0x370, 0x390, 0x390, 0x390, 0x390, 0x3b0, - 0x3b0, 0x3b0, 0x3b0, 0x3d0, 0x3d0, 0x3d0, 0x3d0, 0x3f0, 0x3f0, 0x3f0, 0x3f0, 0x410, 0x410, - 0x410, 0x410, 0x430, 0x430, 0x430, 0x430, 0x450, 0x450, 0x450, 0x450, 0x470, 0x470, 0x470, - 0x470, 0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, - 0x30, 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, 0x30, - 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, 0x30, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xb0, 0xb0, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, - 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, - 0xd0, 0xd0, 0xd0, 0xd0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, - 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, - 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, - 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, - 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, - 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, - 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, - 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, - 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, - 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, - 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, - 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x130, - 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, - 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, - 0x130, 0x130, 0x130, 0x130, 0x130, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, - 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, - 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x150, 0x150, - 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, - 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, - 0x150, 0x150, 0x150, 0x150, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, - 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, - 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x80, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, - 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, - 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x108, 0x108, - 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, - 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, - 0x108, 0x108, 0x108, 0x108, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, - 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, - 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x148, 0x148, 0x148, - 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, - 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, - 0x148, 0x148, 0x148, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, - 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, - 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x188, 0x188, 0x188, 0x188, - 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, - 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, - 0x188, 0x188, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, - 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, - 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, - 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, - 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, - 0x1c8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, - 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, - 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, - 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, - 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, - 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, - 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, - 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, - 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, - 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x268, - 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, - 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, - 0x268, 0x268, 0x268, 0x268, 0x268, - ]; - - #[test] - fn test_index_byte_array_literal() { - let index_array_as_bytes: &[u8] = super::INDEX_ARRAY_AS_BYTES; - let index_zv_bytes: ZeroVec = - ZeroVec::parse_bytes(index_array_as_bytes).expect("infallible"); - let index_zv_aligned: ZeroVec = ZeroVec::from_slice_or_alloc(INDEX_ARRAY); - assert_eq!(index_zv_bytes, index_zv_aligned); - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/serde.rs b/deps/crates/vendor/icu_collections-v2/src/codepointtrie/serde.rs deleted file mode 100644 index adfb2d8aa08e..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/serde.rs +++ /dev/null @@ -1,74 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use crate::codepointtrie::{CodePointTrie, CodePointTrieHeader, TrieValue}; -use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer}; -use zerofrom::ZeroFrom; -use zerovec::ZeroVec; - -#[derive(Serialize, Deserialize)] -pub struct CodePointTrieSerde<'trie, T: TrieValue> { - header: CodePointTrieHeader, - #[serde(borrow)] - index: ZeroVec<'trie, u16>, - #[serde(borrow)] - data: ZeroVec<'trie, T>, -} - -impl Serialize for CodePointTrie<'_, T> { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - let ser = CodePointTrieSerde { - header: self.header, - index: ZeroFrom::zero_from(&self.index), - data: ZeroFrom::zero_from(&self.data), - }; - ser.serialize(serializer) - } -} - -impl<'de, 'trie, T: TrieValue + Deserialize<'de>> Deserialize<'de> for CodePointTrie<'trie, T> -where - 'de: 'trie, -{ - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let de = CodePointTrieSerde::deserialize(deserializer)?; - // SAFETY: - // `validate_fields` upholds the invariants for the fields that - // fast-path access without bound checks relies on. - let error_value = match CodePointTrie::validate_fields(&de.header, &de.index, &de.data) { - Ok(v) => v, - Err(e) => { - match e { - super::CodePointTrieError::FromDeserialized { reason } => { - // Not supposed to be returned by `validate_fields`. - debug_assert!(false); - return Err(D::Error::custom(reason)); - } - super::CodePointTrieError::EmptyDataVector => { - return Err(D::Error::custom("CodePointTrie must be constructed from data vector with at least one element")); - } - super::CodePointTrieError::IndexTooShortForFastAccess => { - return Err(D::Error::custom("CodePointTrie must be constructed from index vector long enough to accommodate fast-path access")); - } - super::CodePointTrieError::DataTooShortForFastAccess => { - return Err(D::Error::custom("CodePointTrie must be constructed from data vector long enough to accommodate fast-path access")); - } - } - } - }; - // Field invariants upheld: Checked by `validate_fields` above. - Ok(CodePointTrie { - header: de.header, - index: de.index, - data: de.data, - error_value, - }) - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/toml.rs b/deps/crates/vendor/icu_collections-v2/src/codepointtrie/toml.rs deleted file mode 100644 index 0e05f16510da..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/codepointtrie/toml.rs +++ /dev/null @@ -1,124 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! Utilities for reading [`CodePointTrie`] data from TOML files. - -use crate::codepointtrie::error::Error; -use crate::codepointtrie::CodePointTrie; -use crate::codepointtrie::CodePointTrieHeader; -use crate::codepointtrie::TrieType; -use crate::codepointtrie::TrieValue; -use alloc::string::String; -use alloc::vec::Vec; -use core::convert::TryFrom; -use zerovec::ZeroVec; - -/// A Serde-compatible struct for reading serialized [`CodePointTrie`] TOML files -/// generated by ICU4C. -/// -/// Use `TryInto` to convert [`CodePointTrieToml`] to a proper [`CodePointTrie`]. -#[derive(serde::Deserialize, Debug)] -pub struct CodePointTrieToml { - #[serde(skip)] - _short_name: String, - #[serde(skip)] - _long_name: String, - #[serde(skip)] - _name: String, - index: Vec, - data_8: Option>, - data_16: Option>, - data_32: Option>, - #[serde(skip)] - _index_length: u32, - #[serde(skip)] - _data_length: u32, - #[serde(rename = "highStart")] - high_start: u32, - #[serde(rename = "shifted12HighStart")] - shifted12_high_start: u16, - #[serde(rename = "type")] - trie_type_enum_val: u8, - #[serde(rename = "valueWidth")] - _value_width_enum_val: u8, - #[serde(rename = "index3NullOffset")] - index3_null_offset: u16, - #[serde(rename = "dataNullOffset")] - data_null_offset: u32, - #[serde(rename = "nullValue")] - null_value: u32, -} - -/// Data slice from a [`CodePointTrie`] TOML. -/// -/// ICU4C exports data as either `u8`, `u16`, or `u32`, which may be converted -/// to other types as appropriate. -#[allow(clippy::exhaustive_enums)] // based on a stable serialized form -#[derive(Debug)] -pub enum CodePointDataSlice<'a> { - /// A serialized [`CodePointTrie`] data array 8-bit values. - U8(&'a [u8]), - /// A serialized [`CodePointTrie`] data array 16-bit values. - U16(&'a [u16]), - /// A serialized [`CodePointTrie`] data array 32-bit values. - U32(&'a [u32]), -} - -impl CodePointTrieToml { - /// Gets the `index` slice. - pub fn index_slice(&self) -> &[u16] { - self.index.as_slice() - } - - /// Gets the `data` slice. - pub fn data_slice(&self) -> Result, Error> { - if let Some(data_8) = &self.data_8 { - Ok(CodePointDataSlice::U8(data_8.as_slice())) - } else if let Some(data_16) = &self.data_16 { - Ok(CodePointDataSlice::U16(data_16.as_slice())) - } else if let Some(data_32) = &self.data_32 { - Ok(CodePointDataSlice::U32(data_32.as_slice())) - } else { - Err(Error::FromDeserialized { - reason: "Did not find data array for CodePointTrie in TOML", - }) - } - } -} - -impl TryFrom<&CodePointTrieToml> for CodePointTrieHeader { - type Error = Error; - - fn try_from(cpt_data: &CodePointTrieToml) -> Result { - let trie_type_enum: TrieType = TrieType::try_from(cpt_data.trie_type_enum_val)?; - Ok(CodePointTrieHeader { - high_start: cpt_data.high_start, - shifted12_high_start: cpt_data.shifted12_high_start, - index3_null_offset: cpt_data.index3_null_offset, - data_null_offset: cpt_data.data_null_offset, - null_value: cpt_data.null_value, - trie_type: trie_type_enum, - }) - } -} - -impl TryFrom<&CodePointTrieToml> for CodePointTrie<'static, T> { - type Error = Error; - - fn try_from(cpt_data: &CodePointTrieToml) -> Result, Self::Error> { - use CodePointDataSlice::*; - let header = CodePointTrieHeader::try_from(cpt_data)?; - let index: ZeroVec = ZeroVec::alloc_from_slice(&cpt_data.index); - let data: Result, T::TryFromU32Error> = match cpt_data.data_slice()? { - U8(s) => s.iter().map(|i| T::try_from_u32(*i as u32)).collect(), - U16(s) => s.iter().map(|i| T::try_from_u32(*i as u32)).collect(), - U32(s) => s.iter().map(|i| T::try_from_u32(*i)).collect(), - }; - - let data = data.map_err(|_| Error::FromDeserialized { - reason: "Could not parse data array to typed array", - })?; - CodePointTrie::::try_new(header, index, data) - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/iterator_utils.rs b/deps/crates/vendor/icu_collections-v2/src/iterator_utils.rs deleted file mode 100644 index 913e3535eeb6..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/iterator_utils.rs +++ /dev/null @@ -1,188 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use crate::codepointtrie::CodePointMapRange; - -/// This is an iterator that coalesces adjacent ranges in an iterator over code -/// point ranges -pub(crate) struct RangeListIteratorCoalescer { - iter: I, - peek: Option>, -} - -impl RangeListIteratorCoalescer -where - I: Iterator>, -{ - pub fn new(iter: I) -> Self { - Self { iter, peek: None } - } -} - -impl Iterator for RangeListIteratorCoalescer -where - I: Iterator>, -{ - type Item = CodePointMapRange; - - fn next(&mut self) -> Option { - // Get the initial range we're working with: either a leftover - // range from last time, or the next range - let mut ret = if let Some(peek) = self.peek.take() { - peek - } else if let Some(next) = self.iter.next() { - next - } else { - // No ranges, exit early - return None; - }; - - // Keep pulling ranges - #[expect(clippy::while_let_on_iterator)] - // can't move the iterator, also we want it to be explicit that we're not draining the iterator - while let Some(next) = self.iter.next() { - if *next.range.start() == ret.range.end() + 1 && next.value == ret.value { - // Range has no gap, coalesce - ret.range = *ret.range.start()..=*next.range.end(); - } else { - // Range has a gap, return what we have so far, update - // peek - self.peek = Some(next); - return Some(ret); - } - } - - // Ran out of elements, exit - Some(ret) - } -} - -#[cfg(test)] -mod tests { - use crate::codepointinvlist::CodePointInversionListBuilder; - use core::fmt::Debug; - use icu_properties::props::{BinaryProperty, EnumeratedProperty}; - use icu_properties::{CodePointMapData, CodePointSetData}; - - fn test_set(name: &str) { - let mut builder = CodePointInversionListBuilder::new(); - let mut builder_complement = CodePointInversionListBuilder::new(); - - for range in CodePointSetData::new::

().iter_ranges() { - builder.add_range32(range) - } - - for range in CodePointSetData::new::

().iter_ranges_complemented() { - builder_complement.add_range32(range) - } - - builder.complement(); - let set1 = builder.build(); - let set2 = builder_complement.build(); - assert_eq!(set1, set2, "Set {name} failed to complement correctly"); - } - - fn test_map(value: T, name: &str) { - let mut builder = CodePointInversionListBuilder::new(); - let mut builder_complement = CodePointInversionListBuilder::new(); - - for range in CodePointMapData::::new().iter_ranges_for_value(value) { - builder.add_range32(range) - } - - for range in CodePointMapData::::new().iter_ranges_for_value_complemented(value) { - builder_complement.add_range32(range) - } - - builder.complement(); - let set1 = builder.build(); - let set2 = builder_complement.build(); - assert_eq!( - set1, set2, - "Map {name} failed to complement correctly with value {value:?}" - ); - } - - #[test] - fn test_complement_sets() { - use icu_properties::props::*; - // Stress test the RangeListIteratorComplementer logic by ensuring it works for - // a whole bunch of binary properties - test_set::("ASCII_Hex_Digit"); - test_set::("Alnum"); - test_set::("Alphabetic"); - test_set::("Bidi_Control"); - test_set::("Bidi_Mirrored"); - test_set::("Blank"); - test_set::("Cased"); - test_set::("Case_Ignorable"); - test_set::("Full_Composition_Exclusion"); - test_set::("Changes_When_Casefolded"); - test_set::("Changes_When_Casemapped"); - test_set::("Changes_When_NFKC_Casefolded"); - test_set::("Changes_When_Lowercased"); - test_set::("Changes_When_Titlecased"); - test_set::("Changes_When_Uppercased"); - test_set::("Dash"); - test_set::("Deprecated"); - test_set::("Default_Ignorable_Code_Point"); - test_set::("Diacritic"); - test_set::("Emoji_Modifier_Base"); - test_set::("Emoji_Component"); - test_set::("Emoji_Modifier"); - test_set::("Emoji"); - test_set::("Emoji_Presentation"); - test_set::("Extender"); - test_set::("Extended_Pictographic"); - test_set::("Graph"); - test_set::("Grapheme_Base"); - test_set::("Grapheme_Extend"); - test_set::("Grapheme_Link"); - test_set::("Hex_Digit"); - test_set::("Hyphen"); - test_set::("Id_Continue"); - test_set::("Ideographic"); - test_set::("Id_Start"); - test_set::("Ids_Binary_Operator"); - test_set::("Ids_Trinary_Operator"); - test_set::("Join_Control"); - test_set::("Logical_Order_Exception"); - test_set::("Lowercase"); - test_set::("Math"); - test_set::("Noncharacter_Code_Point"); - test_set::("NFC_Inert"); - test_set::("NFD_Inert"); - test_set::("NFKC_Inert"); - test_set::("NFKD_Inert"); - test_set::("Pattern_Syntax"); - test_set::("Pattern_White_Space"); - test_set::("Prepended_Concatenation_Mark"); - test_set::("Print"); - test_set::("Quotation_Mark"); - test_set::("Radical"); - test_set::("Regional_Indicator"); - test_set::("Soft_Dotted"); - test_set::("Segment_Starter"); - test_set::("Case_Sensitive"); - test_set::("Sentence_Terminal"); - test_set::("Terminal_Punctuation"); - test_set::("Unified_Ideograph"); - test_set::("Uppercase"); - test_set::("Variation_Selector"); - test_set::("White_Space"); - test_set::("Xdigit"); - test_set::("XID_Continue"); - test_set::("XID_Start"); - } - - #[test] - fn test_complement_maps() { - use icu_properties::props::{GeneralCategory, Script}; - test_map(GeneralCategory::UppercaseLetter, "gc"); - test_map(GeneralCategory::OtherPunctuation, "gc"); - test_map(Script::Devanagari, "script"); - test_map(Script::Latin, "script"); - test_map(Script::Common, "script"); - } -} diff --git a/deps/crates/vendor/icu_collections-v2/src/lib.rs b/deps/crates/vendor/icu_collections-v2/src/lib.rs deleted file mode 100644 index f19010e72bf6..000000000000 --- a/deps/crates/vendor/icu_collections-v2/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations -#![cfg_attr(not(any(test, doc)), no_std)] -#![cfg_attr( - not(test), - deny( - clippy::indexing_slicing, - clippy::unwrap_used, - clippy::expect_used, - clippy::panic, - ) -)] -#![warn(missing_docs)] - -//! Efficient collections for Unicode data. -//! -//! This module is published as its own crate ([`icu_collections`](https://docs.rs/icu_collections/latest/icu_collections/)) -//! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project. -//! -//! ICU4X [`CodePointTrie`](crate::codepointtrie::CodePointTrie) provides a read-only view of `CodePointTrie` data that is exported -//! from ICU4C. Detailed information about the design of the data structure can be found in the documentation -//! for the [`CodePointTrie`](crate::codepointtrie::CodePointTrie) struct. -//! -//! ICU4X [`CodePointInversionList`](`crate::codepointinvlist::CodePointInversionList`) provides necessary functionality for highly efficient querying of sets of Unicode characters. -//! It is an implementation of the existing [ICU4C UnicodeSet API](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UnicodeSet.html). -//! -//! ICU4X [`Char16Trie`](`crate::char16trie::Char16Trie`) provides a data structure for a space-efficient and time-efficient lookup of -//! sequences of 16-bit units (commonly but not necessarily UTF-16 code units) -//! which map to integer values. -//! It is an implementation of the existing [ICU4C UCharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UCharsTrie.html) -//! / [ICU4J CharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/util/CharsTrie.html) API. - -#[cfg(feature = "alloc")] -extern crate alloc; - -pub mod char16trie; -pub mod codepointinvlist; -pub mod codepointinvliststringlist; -pub mod codepointtrie; - -pub(crate) mod iterator_utils; diff --git a/deps/crates/vendor/icu_collections-v2/tests/char16trie.rs b/deps/crates/vendor/icu_collections-v2/tests/char16trie.rs deleted file mode 100644 index dcb4424c635e..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/char16trie.rs +++ /dev/null @@ -1,304 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use icu_collections::char16trie::{Char16Trie, TrieResult}; -use zerovec::ZeroVec; - -#[test] -fn empty() { - let trie_data = toml::from_str::(include_str!("data/char16trie/empty.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - let res = trie.iter().next('h'); - assert_eq!(res, TrieResult::NoMatch); -} - -#[test] -fn a() { - let trie_data = toml::from_str::(include_str!("data/char16trie/test_a.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - - let mut iter = trie.iter(); - let res = iter.next('h'); - assert_eq!(res, TrieResult::NoMatch); - - let mut iter = trie.iter(); - let res = iter.next('a'); - assert_eq!(res, TrieResult::FinalValue(1)); - let res = iter.next('a'); - assert_eq!(res, TrieResult::NoMatch); -} - -#[test] -fn a_b() { - let trie_data = toml::from_str::(include_str!("data/char16trie/test_a_ab.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - - let mut iter = trie.iter(); - let res = iter.next('a'); - assert_eq!(res, TrieResult::Intermediate(1)); - let res = iter.next('a'); - assert_eq!(res, TrieResult::NoMatch); - - let mut iter = trie.iter(); - let res = iter.next('a'); - assert_eq!(res, TrieResult::Intermediate(1)); - let res = iter.next('b'); - assert_eq!(res, TrieResult::FinalValue(100)); - let res = iter.next('b'); - assert_eq!(res, TrieResult::NoMatch); -} - -#[test] -fn shortest_branch() { - let trie_data = - toml::from_str::(include_str!("data/char16trie/test_shortest_branch.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - - let mut iter = trie.iter(); - let res = iter.next('a'); - assert_eq!(res, TrieResult::FinalValue(1000)); - let res = iter.next('b'); - assert_eq!(res, TrieResult::NoMatch); - - let mut iter = trie.iter(); - let res = iter.next('b'); - assert_eq!(res, TrieResult::FinalValue(2000)); - let res = iter.next('a'); - assert_eq!(res, TrieResult::NoMatch); -} - -#[test] -fn branches() { - let trie_data = toml::from_str::(include_str!("data/char16trie/test_branches.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - - for (query, expected) in [ - ("a", TrieResult::FinalValue(0x10)), - ("cc", TrieResult::FinalValue(0x40)), - ("e", TrieResult::FinalValue(0x100)), - ("ggg", TrieResult::FinalValue(0x400)), - ("i", TrieResult::FinalValue(0x1000)), - ("kkkk", TrieResult::FinalValue(0x4000)), - ("n", TrieResult::FinalValue(0x10000)), - ("ppppp", TrieResult::FinalValue(0x40000)), - ("r", TrieResult::FinalValue(0x100000)), - ("sss", TrieResult::FinalValue(0x200000)), - ("t", TrieResult::FinalValue(0x400000)), - ("uu", TrieResult::FinalValue(0x800000)), - ("vv", TrieResult::FinalValue(0x7fffffff)), - ("zz", TrieResult::FinalValue(-2147483648)), - ] { - let mut iter = trie.iter(); - for (i, chr) in query.chars().enumerate() { - let res = iter.next(chr); - if i + 1 == query.len() { - assert_eq!(res, expected); - } else { - assert_eq!(res, TrieResult::NoValue); - } - } - } -} - -#[test] -fn long_sequence() { - let trie_data = - toml::from_str::(include_str!("data/char16trie/test_long_sequence.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - - for (query, expected) in [ - ("a", TrieResult::Intermediate(-1)), - // sequence of linear-match nodes - ( - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", - TrieResult::Intermediate(-2), - ), - // more than 256 units - ( - concat!( - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - ), - TrieResult::FinalValue(-3), - ), - ] { - let mut iter = trie.iter(); - for (i, chr) in query.chars().enumerate() { - let res = iter.next(chr); - if i + 1 == query.len() { - assert_eq!(res, expected); - } else if i == 0 { - assert_eq!(res, TrieResult::Intermediate(-1)); - } else if i == 51 { - assert_eq!(res, TrieResult::Intermediate(-2)); - } else { - assert_eq!(res, TrieResult::NoValue); - } - } - } -} - -#[test] -fn long_branch() { - let trie_data = - toml::from_str::(include_str!("data/char16trie/test_long_branch.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - - for (query, expected) in [ - ("a", TrieResult::FinalValue(-2)), - ("b", TrieResult::FinalValue(-1)), - ("c", TrieResult::FinalValue(0)), - ("d2", TrieResult::FinalValue(1)), - ("f", TrieResult::FinalValue(0x3f)), - ("g", TrieResult::FinalValue(0x40)), - ("h", TrieResult::FinalValue(0x41)), - ("j23", TrieResult::FinalValue(0x1900)), - ("j24", TrieResult::FinalValue(0x19ff)), - ("j25", TrieResult::FinalValue(0x1a00)), - ("k2", TrieResult::FinalValue(0x1a80)), - ("k3", TrieResult::FinalValue(0x1aff)), - ("l234567890", TrieResult::Intermediate(0x1b00)), - ("l234567890123", TrieResult::FinalValue(0x1b01)), - ( - "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn", - TrieResult::FinalValue(0x10ffff), - ), - ( - "oooooooooooooooooooooooooooooooooooooooooooooooooooooo", - TrieResult::FinalValue(0x110000), - ), - ( - "pppppppppppppppppppppppppppppppppppppppppppppppppppppp", - TrieResult::FinalValue(0x120000), - ), - ("r", TrieResult::FinalValue(0x333333)), - ("s2345", TrieResult::FinalValue(0x4444444)), - ("t234567890", TrieResult::FinalValue(0x77777777)), - ("z", TrieResult::FinalValue(-2147483647)), - ] { - let mut iter = trie.iter(); - for (i, chr) in query.chars().enumerate() { - let res = iter.next(chr); - if i + 1 == query.len() { - assert_eq!(res, expected); - } else if query == "l234567890123" && i == 9 { - assert_eq!(res, TrieResult::Intermediate(0x1b00)); - } else { - assert_eq!(res, TrieResult::NoValue); - } - } - } -} - -#[test] -fn compact() { - let trie_data = toml::from_str::(include_str!("data/char16trie/test_compact.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - - for (query, expected) in [ - ("+", TrieResult::Intermediate(0)), - ("+august", TrieResult::FinalValue(8)), - ("+december", TrieResult::FinalValue(12)), - ("+july", TrieResult::FinalValue(7)), - ("+june", TrieResult::FinalValue(6)), - ("+november", TrieResult::FinalValue(11)), - ("+october", TrieResult::FinalValue(10)), - ("+september", TrieResult::FinalValue(9)), - ("-", TrieResult::Intermediate(0)), - ("-august", TrieResult::FinalValue(8)), - ("-december", TrieResult::FinalValue(12)), - ("-july", TrieResult::FinalValue(7)), - ("-june", TrieResult::FinalValue(6)), - ("-november", TrieResult::FinalValue(11)), - ("-october", TrieResult::FinalValue(10)), - ("-september", TrieResult::FinalValue(9)), - ("xjuly", TrieResult::FinalValue(7)), - ("xjune", TrieResult::FinalValue(6)), - ] { - let mut iter = trie.iter(); - for (i, chr) in query.chars().enumerate() { - let res = iter.next(chr); - if i + 1 == query.len() { - assert_eq!(res, expected); - } else if chr == '-' || chr == '+' { - assert_eq!(res, TrieResult::Intermediate(0)); - } else { - assert_eq!(res, TrieResult::NoValue); - } - } - } -} - -#[test] -fn months() { - let trie_data = toml::from_str::(include_str!("data/char16trie/months.toml")) - .unwrap() - .ucharstrie - .data; - let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice())); - - let mut iter = trie.iter(); - for (chr, expected) in [ - ('j', TrieResult::NoValue), - ('u', TrieResult::NoValue), - ('n', TrieResult::Intermediate(6)), - ('e', TrieResult::FinalValue(6)), - ] { - let res = iter.next(chr); - assert_eq!(res, expected); - } - let res = iter.next('h'); - assert_eq!(res, TrieResult::NoMatch); - - let mut iter = trie.iter(); - for (chr, expected) in [ - ('j', TrieResult::NoValue), - ('u', TrieResult::NoValue), - ('l', TrieResult::NoValue), - ('y', TrieResult::FinalValue(7)), - ] { - let res = iter.next(chr); - assert_eq!(res, expected); - } - let res = iter.next('h'); - assert_eq!(res, TrieResult::NoMatch); -} - -#[derive(serde::Deserialize)] -struct TestFile { - ucharstrie: Char16TrieVec, -} - -#[derive(serde::Deserialize)] -struct Char16TrieVec { - data: Vec, -} diff --git a/deps/crates/vendor/icu_collections-v2/tests/cpt.rs b/deps/crates/vendor/icu_collections-v2/tests/cpt.rs deleted file mode 100644 index 1218ea79558a..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/cpt.rs +++ /dev/null @@ -1,489 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -#![allow(dead_code)] - -use icu_collections::codepointtrie::planes::get_planes_trie; -use icu_collections::codepointtrie::*; -use zerovec::ZeroVec; - -#[test] -fn planes_trie_deserialize_check_test() { - // Get expected planes trie from crate::planes::get_planes_trie() - - let exp_planes_trie = get_planes_trie(); - - // Compute actual planes trie from planes.toml - - let planes_enum_prop = - ::toml::from_str::(include_str!("data/cpt/planes.toml")) - .unwrap(); - - let code_point_trie_struct = planes_enum_prop.code_point_trie.trie_struct; - - let trie_header = CodePointTrieHeader { - high_start: code_point_trie_struct.high_start, - shifted12_high_start: code_point_trie_struct.shifted12_high_start, - index3_null_offset: code_point_trie_struct.index3_null_offset, - data_null_offset: code_point_trie_struct.data_null_offset, - null_value: code_point_trie_struct.null_value, - trie_type: TrieType::try_from(code_point_trie_struct.trie_type_enum_val).unwrap_or_else( - |_| { - panic!( - "Could not parse trie_type serialized enum value in test data file: {}", - code_point_trie_struct.name - ) - }, - ), - }; - - let data = ZeroVec::from_slice_or_alloc(code_point_trie_struct.data_8.as_ref().unwrap()); - let index = ZeroVec::from_slice_or_alloc(&code_point_trie_struct.index); - let trie_result = CodePointTrie::try_new(trie_header, index, data); - let act_planes_trie = trie_result.unwrap(); - - // Get check ranges (inversion map-style sequence of range+value) and - // apply the trie validation test fn on expected and actual tries - - let serialized_ranges: Vec<(u32, u32, u32)> = planes_enum_prop.code_point_map.data.ranges; - let mut check_ranges: Vec = vec![]; - for range_tuple in serialized_ranges { - let range_end = range_tuple.1 + 1; - let value = range_tuple.2; - check_ranges.push(range_end); - check_ranges.push(value); - } - - check_trie(&act_planes_trie, &check_ranges); - check_trie(&exp_planes_trie, &check_ranges); -} - -#[test] -fn free_blocks_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/free-blocks.16.toml")); -} - -#[test] -fn free_blocks_32() { - run_deserialize_test_from_test_data(include_str!("data/cpt/free-blocks.32.toml")); -} - -#[test] -fn free_blocks_8() { - run_deserialize_test_from_test_data(include_str!("data/cpt/free-blocks.8.toml")); -} - -#[test] -fn free_blocks_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/free-blocks.small16.toml")); -} - -#[test] -fn grow_data_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/grow-data.16.toml")); -} - -#[test] -fn grow_data_32() { - run_deserialize_test_from_test_data(include_str!("data/cpt/grow-data.32.toml")); -} - -#[test] -fn grow_data_8() { - run_deserialize_test_from_test_data(include_str!("data/cpt/grow-data.8.toml")); -} - -#[test] -fn grow_data_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/grow-data.small16.toml")); -} - -#[test] -fn set1_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set1.16.toml")); -} - -#[test] -fn set1_32() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set1.32.toml")); -} - -#[test] -fn set1_8() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set1.8.toml")); -} - -#[test] -fn set1_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set1.small16.toml")); -} - -#[test] -fn set2_overlap_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set2-overlap.16.toml")); -} - -#[test] -fn set2_overlap_32() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set2-overlap.32.toml")); -} - -#[test] -fn set2_overlap_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set2-overlap.small16.toml")); -} - -#[test] -fn set3_initial_9_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set3-initial-9.16.toml")); -} - -#[test] -fn set3_initial_9_32() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set3-initial-9.32.toml")); -} - -#[test] -fn set3_initial_9_8() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set3-initial-9.8.toml")); -} - -#[test] -fn set3_initial_9_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set3-initial-9.small16.toml")); -} - -#[test] -fn set_empty_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set-empty.16.toml")); -} - -#[test] -fn set_empty_32() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set-empty.32.toml")); -} - -#[test] -fn set_empty_8() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set-empty.8.toml")); -} - -#[test] -fn set_empty_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set-empty.small16.toml")); -} - -#[test] -fn set_single_value_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set-single-value.16.toml")); -} - -#[test] -fn set_single_value_32() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set-single-value.32.toml")); -} - -#[test] -fn set_single_value_8() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set-single-value.8.toml")); -} - -#[test] -fn set_single_value_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/set-single-value.small16.toml")); -} - -#[test] -fn short_all_same_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/short-all-same.16.toml")); -} - -#[test] -fn short_all_same_8() { - run_deserialize_test_from_test_data(include_str!("data/cpt/short-all-same.8.toml")); -} - -#[test] -fn short_all_same_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/short-all-same.small16.toml")); -} - -#[test] -fn small0_in_fast_16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/small0-in-fast.16.toml")); -} - -#[test] -fn small0_in_fast_32() { - run_deserialize_test_from_test_data(include_str!("data/cpt/small0-in-fast.32.toml")); -} - -#[test] -fn small0_in_fast_8() { - run_deserialize_test_from_test_data(include_str!("data/cpt/small0-in-fast.8.toml")); -} - -#[test] -fn small0_in_fast_small16() { - run_deserialize_test_from_test_data(include_str!("data/cpt/small0-in-fast.small16.toml")); -} - -/// The width of the elements in the data array of a [`CodePointTrie`]. -/// See [`UCPTrieValueWidth`](https://unicode-org.github.io/icu-docs/apidoc/dev/icu4c/ucptrie_8h.html) in ICU4C. -#[derive(Clone, Copy, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -enum ValueWidthEnum { - Bits16 = 0, - Bits32 = 1, - Bits8 = 2, -} - -/// Test .`get()` on [`CodePointTrie`] by iterating through each range in -/// `check_ranges` and assert that the associated -/// value matches the trie value for each code point in the range. -fn check_trie>(trie: &CodePointTrie, check_ranges: &[u32]) { - assert_eq!( - 0, - check_ranges.len() % 2, - "check_ranges must have an even number of 32-bit values in (limit,value) pairs" - ); - - let mut i: u32 = 0; - let check_range_tuples = check_ranges.chunks(2); - // Iterate over each check range - for range_tuple in check_range_tuples { - let range_limit = range_tuple[0]; - let range_value = range_tuple[1]; - // Check all values in this range, one-by-one - while i < range_limit { - assert_eq!(range_value, trie.get32(i).into(), "trie_get({i})",); - i += 1; - } - } -} - -/// Test `.get_range()` / `.iter_ranges()` on [`CodePointTrie`] by calling -/// `.iter_ranges()` on the trie. -/// -/// `.iter_ranges()` returns an iterator that produces values -/// by calls to .`get_range`, and this checks if it matches the values in `check_ranges`. -fn test_check_ranges_get_ranges>( - trie: &CodePointTrie, - check_ranges: &[u32], -) { - assert_eq!( - 0, - check_ranges.len() % 2, - "check_ranges must have an even number of 32-bit values in (limit,value) pairs" - ); - - let mut trie_ranges = trie.iter_ranges(); - - let mut range_start: u32 = 0; - let check_range_tuples = check_ranges.chunks(2); - // Iterate over each check range - for range_tuple in check_range_tuples { - let range_limit = range_tuple[0]; - let range_value = range_tuple[1]; - - // The check ranges array seems to start with a trivial range whose - // limit is zero. range_start is initialized to 0, so we can skip. - if range_limit == 0 { - continue; - } - - let cpm_range = trie_ranges.next(); - assert!(cpm_range.is_some(), "CodePointTrie iter_ranges() produces fewer ranges than the check_ranges field in testdata has"); - let cpm_range = cpm_range.unwrap(); - let cpmr_start = cpm_range.range.start(); - let cpmr_end = cpm_range.range.end(); - let cpmr_value: u32 = cpm_range.value.into(); - - assert_eq!(range_start, *cpmr_start); - assert_eq!(range_limit, *cpmr_end + 1); - assert_eq!(range_value, cpmr_value); - - range_start = range_limit; - } - - assert!(trie_ranges.next().is_none(), "CodePointTrie iter_ranges() produces more ranges than the check_ranges field in testdata has"); -} - -/// Run above tests that verify the validity of [`CodePointTrie`] methods -fn run_trie_tests>(trie: &CodePointTrie, check_ranges: &[u32]) { - check_trie(trie, check_ranges); - test_check_ranges_get_ranges(trie, check_ranges); -} - -// The following structs might be useful later for de-/serialization of the -// main `CodePointTrie` struct in the corresponding data provider. - -#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))] -struct UnicodeEnumeratedProperty { - code_point_map: EnumPropCodePointMap, - code_point_trie: EnumPropSerializedCPT, -} - -#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))] -struct EnumPropCodePointMap { - data: EnumPropCodePointMapData, -} - -#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))] -struct EnumPropCodePointMapData { - long_name: String, - name: String, - ranges: Vec<(u32, u32, u32)>, -} - -#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))] -struct EnumPropSerializedCPT { - #[cfg_attr(any(feature = "serde", test), serde(rename = "struct"))] - trie_struct: EnumPropSerializedCPTStruct, -} - -// These structs support the test data dumped as TOML files from ICU. -// Because the properties CodePointMap data will also be dumped from ICU -// using similar functions, some of these structs may be useful to refactor -// into main code at a later point. - -#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))] -struct EnumPropSerializedCPTStruct { - #[cfg_attr(any(feature = "serde", test), serde(skip))] - long_name: String, - name: String, - index: Vec, - data_8: Option>, - data_16: Option>, - data_32: Option>, - #[cfg_attr(any(feature = "serde", test), serde(skip))] - index_length: u32, - #[cfg_attr(any(feature = "serde", test), serde(skip))] - data_length: u32, - #[cfg_attr(any(feature = "serde", test), serde(rename = "highStart"))] - high_start: u32, - #[cfg_attr(any(feature = "serde", test), serde(rename = "shifted12HighStart"))] - shifted12_high_start: u16, - #[cfg_attr(any(feature = "serde", test), serde(rename = "type"))] - trie_type_enum_val: u8, - #[cfg_attr(any(feature = "serde", test), serde(rename = "valueWidth"))] - value_width_enum_val: u8, - #[cfg_attr(any(feature = "serde", test), serde(rename = "index3NullOffset"))] - index3_null_offset: u16, - #[cfg_attr(any(feature = "serde", test), serde(rename = "dataNullOffset"))] - data_null_offset: u32, - #[cfg_attr(any(feature = "serde", test), serde(rename = "nullValue"))] - null_value: u32, -} - -// Given a .toml file dumped from ICU4C test data for UCPTrie, run the test -// data file deserialization into the test file struct, convert and construct -// the `CodePointTrie`, and test the constructed struct against the test file's -// "check ranges" (inversion map ranges) using `check_trie` to verify the -// validity of the `CodePointTrie`'s behavior for all code points. -#[allow(dead_code)] -fn run_deserialize_test_from_test_data(test_file: &str) { - // The following structs are specific to the TOML format files for dumped ICU - // test data. - - #[derive(serde::Deserialize)] - struct TestFile { - code_point_trie: TestCodePointTrie, - } - - #[derive(serde::Deserialize)] - struct TestCodePointTrie { - // The trie_struct field for test data files is dumped from the same source - // (ICU4C) using the same function (usrc_writeUCPTrie) as property data - // for the provider, so we can reuse the same struct here. - #[serde(rename(deserialize = "struct"))] - trie_struct: EnumPropSerializedCPTStruct, - #[serde(rename(deserialize = "testdata"))] - test_data: TestData, - } - - #[derive(serde::Deserialize)] - struct TestData { - #[serde(rename(deserialize = "checkRanges"))] - check_ranges: Vec, - } - - let test_file = ::toml::from_str::(test_file).unwrap(); - - let test_struct = test_file.code_point_trie.trie_struct; - - println!( - "Running CodePointTrie reader logic test on test data file: {}", - test_struct.name - ); - - let trie_type_enum = match TrieType::try_from(test_struct.trie_type_enum_val) { - Ok(enum_val) => enum_val, - _ => { - panic!( - "Could not parse trie_type serialized enum value in test data file: {}", - test_struct.name - ); - } - }; - - let trie_header = CodePointTrieHeader { - high_start: test_struct.high_start, - shifted12_high_start: test_struct.shifted12_high_start, - index3_null_offset: test_struct.index3_null_offset, - data_null_offset: test_struct.data_null_offset, - null_value: test_struct.null_value, - trie_type: trie_type_enum, - }; - - let index = ZeroVec::from_slice_or_alloc(&test_struct.index); - - match (test_struct.data_8, test_struct.data_16, test_struct.data_32) { - (Some(data_8), _, _) => { - let data = ZeroVec::from_slice_or_alloc(&data_8); - let trie_result = CodePointTrie::try_new(trie_header, index, data); - assert!(trie_result.is_ok(), "Could not construct trie"); - assert_eq!( - test_struct.value_width_enum_val, - ValueWidthEnum::Bits8 as u8 - ); - run_trie_tests( - &trie_result.unwrap(), - &test_file.code_point_trie.test_data.check_ranges, - ); - } - - (_, Some(data_16), _) => { - let data = ZeroVec::from_slice_or_alloc(&data_16); - let trie_result = CodePointTrie::try_new(trie_header, index, data); - assert!(trie_result.is_ok(), "Could not construct trie"); - assert_eq!( - test_struct.value_width_enum_val, - ValueWidthEnum::Bits16 as u8 - ); - run_trie_tests( - &trie_result.unwrap(), - &test_file.code_point_trie.test_data.check_ranges, - ); - } - - (_, _, Some(data_32)) => { - let data = ZeroVec::from_slice_or_alloc(&data_32); - let trie_result = CodePointTrie::try_new(trie_header, index, data); - assert!(trie_result.is_ok(), "Could not construct trie"); - assert_eq!( - test_struct.value_width_enum_val, - ValueWidthEnum::Bits32 as u8 - ); - run_trie_tests( - &trie_result.unwrap(), - &test_file.code_point_trie.test_data.check_ranges, - ); - } - - (_, _, _) => { - panic!("Could not match test trie data to a known value width or trie type"); - } - }; -} diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/empty.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/empty.toml deleted file mode 100644 index 91f04b03ac17..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/empty.toml +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: empty.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 32768, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/months.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/months.toml deleted file mode 100644 index 79bfd4c92df3..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/months.toml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: months.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 1,97,134,106,1,97,13,117,1,108,6,110,449,46,32774,101,32774, - 48,121,32775,48,110,147,106,72,111,22,111,32769,112,11,113,12, - 114,32769,117,49,97,114,176,121,32769,48,112,32769,49,113,113,32769, - 106,32769,107,35,108,32769,109,32769,110,58,110,110,110,110,110,110, - 110,110,110,110,110,63,110,110,110,110,110,110,110,110,110,110, - 110,110,110,110,110,110,32769,2,107,32769,108,32769,109,48,109,32769, - 101,22,101,12,102,32769,103,13,104,32769,105,50,105,105,105,32769, - 1,101,32769,102,32769,48,103,32769,46,32769,97,32769,98,7,99,32769, - 100,49,100,100,32769,48,98,32769,52,117,103,117,115,116,32776, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_a.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_a.toml deleted file mode 100644 index 48f53aaa860b..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_a.toml +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: test_a.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 48,97,32769, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_a_ab.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_a_ab.toml deleted file mode 100644 index c4633ba56059..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_a_ab.toml +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: test_a_ab.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 48,97,176,98,32868, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_branches.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_branches.toml deleted file mode 100644 index 1c7c62619186..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_branches.toml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: test_branches.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 13,112,42,116,22,116,49216,0,117,8,118,10,122,48,122,65535,32768, - 0,48,117,49280,0,48,118,65535,32767,65535,112,9,114,49168,0,115, - 49,115,115,49184,0,51,112,112,112,112,49156,0,103,19,103,7, - 105,36864,107,7,110,49153,0,49,103,103,33792,50,107,107,107,49152, - 16384,97,32784,99,2,101,33024,48,99,32832, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_compact.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_compact.toml deleted file mode 100644 index 780ca9491a8f..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_compact.toml +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: test_compact.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 2,43,13,45,11,120,49,106,117,1,108,53,110,48,101,32774,69, - 110,32,110,13,111,20,115,55,101,112,116,101,109,98,101,114, - 32777,54,111,118,101,109,98,101,114,32779,53,99,116,111,98,101, - 114,32778,97,15,100,20,106,48,117,1,108,4,110,48,101,32774, - 48,121,32775,52,117,103,117,115,116,32776,54,101,99,101,109,98, - 101,114,32780, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_long_branch.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_long_branch.toml deleted file mode 100644 index 4c260ce61b38..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_long_branch.toml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: test_long_branch.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 16,107,240,112,92,112,11,114,49203,13107,115,65,116,70,122,65535,32768, - 1,52,112,112,112,112,112,63,112,112,112,112,112,112,112,112, - 112,112,112,112,112,112,112,112,63,112,112,112,112,112,112,112, - 112,112,112,112,112,112,112,112,112,63,112,112,112,112,112,112, - 112,112,112,112,112,112,112,112,112,112,49170,0,51,50,51,52, - 53,50244,17476,56,50,51,52,53,54,55,56,57,48,65535,30583,30583, - 107,64,108,67,110,81,111,52,111,111,111,111,111,63,111,111, - 111,111,111,111,111,111,111,111,111,111,111,111,111,111,63,111, - 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,63, - 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, - 49169,0,1,50,39552,51,39679,56,50,51,52,53,54,55,56,57, - 48,16498,6912,49,50,51,39681,52,110,110,110,110,110,63,110,110, - 110,110,110,110,110,110,110,110,110,110,110,110,110,110,63,110, - 110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,63, - 110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, - 49168,65535,102,16,102,32831,103,32832,104,32833,106,48,50,2,51,39168, - 52,39423,53,39424,97,65535,65535,65534,98,65535,65535,65535,99,32768,100,48, - 50,32769, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_long_sequence.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_long_sequence.toml deleted file mode 100644 index 72722a369cb6..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_long_sequence.toml +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: test_long_sequence.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 48,97,32754,65535,65535,98,99,100,63,101,102,103,104,105,106,107,108, - 109,110,111,112,113,114,115,116,63,117,118,119,120,121,122,65, - 66,67,68,69,70,71,72,73,74,63,75,76,77,78,79,80, - 81,82,83,84,85,86,87,88,89,90,32755,65535,65534,97,98,99, - 100,63,101,102,103,104,105,106,107,108,109,110,111,112,113,114, - 115,116,63,117,118,119,120,121,122,65,66,67,68,69,70,71, - 72,73,74,63,75,76,77,78,79,80,81,82,83,84,85,86, - 87,88,89,90,63,97,98,99,100,101,102,103,104,105,106,107, - 108,109,110,111,112,63,113,114,115,116,117,118,119,120,121,122, - 65,66,67,68,69,70,63,71,72,73,74,75,76,77,78,79, - 80,81,82,83,84,85,86,63,87,88,89,90,97,98,99,100, - 101,102,103,104,105,106,107,108,63,109,110,111,112,113,114,115, - 116,117,118,119,120,121,122,65,66,63,67,68,69,70,71,72, - 73,74,75,76,77,78,79,80,81,82,63,83,84,85,86,87, - 88,89,90,97,98,99,100,101,102,103,104,63,105,106,107,108, - 109,110,111,112,113,114,115,116,117,118,119,120,63,121,122,65, - 66,67,68,69,70,71,72,73,74,75,76,77,78,63,79,80, - 81,82,83,84,85,86,87,88,89,90,97,98,99,100,63,101, - 102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,63, - 117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74, - 63,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89, - 90,65535,65535,65533, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_shortest_branch.toml b/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_shortest_branch.toml deleted file mode 100644 index 639cb0314c33..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/char16trie/test_shortest_branch.toml +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: test_shortest_branch.toml -# -# machine-generated by: ucharstrietest.c - -[ucharstrie] -data = [ - 1,97,33768,98,34768, -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.16.toml deleted file mode 100644 index 7febd4c3b470..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.16.toml +++ /dev/null @@ -1,113 +0,0 @@ -# This file is part of ICU4X. For terms of use, please see the file -# called LICENSE at the top level of the ICU4X source tree -# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: free-blocks.16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "free-blocks.16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0xc0,0xc0, - 0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_16 = [ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 1,0xad -] -indexLength = 1024 -dataLength = 258 -highStart = 0xa00 -shifted12HighStart = 0x1 -type = 0 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x1 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,1,0x740,1,0x780,2,0x880,3,0x110000,1 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.32.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.32.toml deleted file mode 100644 index 002b6f260dfa..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.32.toml +++ /dev/null @@ -1,113 +0,0 @@ -# This file is part of ICU4X. For terms of use, please see the file -# called LICENSE at the top level of the ICU4X source tree -# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: free-blocks.32 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "free-blocks.32" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0xc0,0xc0, - 0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_32 = [ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 1,0xad -] -indexLength = 1024 -dataLength = 258 -highStart = 0xa00 -shifted12HighStart = 0x1 -type = 0 -valueWidth = 1 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x1 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,1,0x740,1,0x780,2,0x880,3,0x110000,1 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.8.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.8.toml deleted file mode 100644 index c8c469cedc4e..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.8.toml +++ /dev/null @@ -1,113 +0,0 @@ -# This file is part of ICU4X. For terms of use, please see the file -# called LICENSE at the top level of the ICU4X source tree -# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: free-blocks.8 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "free-blocks.8" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0xc0,0xc0, - 0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_8 = [ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 1,1,1,0xad -] -indexLength = 1024 -dataLength = 260 -highStart = 0xa00 -shifted12HighStart = 0x1 -type = 0 -valueWidth = 2 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x1 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,1,0x740,1,0x780,2,0x880,3,0x110000,1 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.small16.toml deleted file mode 100644 index 8a88bcb03180..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/free-blocks.small16.toml +++ /dev/null @@ -1,53 +0,0 @@ -# This file is part of ICU4X. For terms of use, please see the file -# called LICENSE at the top level of the ICU4X source tree -# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: free-blocks.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "free-blocks.small16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0xc0,0xc0, - 0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_16 = [ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 1,0xad -] -indexLength = 64 -dataLength = 258 -highStart = 0xa00 -shifted12HighStart = 0x1 -type = 1 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x1 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,1,0x740,1,0x780,2,0x880,3,0x110000,1 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.16.toml deleted file mode 100644 index 4977ec0d856d..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.16.toml +++ /dev/null @@ -1,117 +0,0 @@ -# This file is part of ICU4X. For terms of use, please see the file -# called LICENSE at the top level of the ICU4X source tree -# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: grow-data.16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "grow-data.16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x80,0xa0,0xc0, - 0xc0,0xc0,0xe0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100 -] -data_16 = [ - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0xad -] -indexLength = 1024 -dataLength = 322 -highStart = 0xa00 -shifted12HighStart = 0x1 -type = 0 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x100 -nullValue = 0x5 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,1,0x720,2,0x7a0,3,0x8a0,4,0x110000,5 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.32.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.32.toml deleted file mode 100644 index 01ea3c3adffd..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.32.toml +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: grow-data.32 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "grow-data.32" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x80,0xa0,0xc0, - 0xc0,0xc0,0xe0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100 -] -data_32 = [ - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 0xad -] -indexLength = 1024 -dataLength = 321 -highStart = 0xa00 -shifted12HighStart = 0x1 -type = 0 -valueWidth = 1 -index3NullOffset = 0x7fff -dataNullOffset = 0x100 -nullValue = 0x5 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,1,0x720,2,0x7a0,3,0x8a0,4,0x110000,5 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.8.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.8.toml deleted file mode 100644 index ef2c0956a6e6..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.8.toml +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: grow-data.8 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "grow-data.8" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x80,0xa0,0xc0, - 0xc0,0xc0,0xe0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100 -] -data_8 = [ - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,0xad -] -indexLength = 1024 -dataLength = 324 -highStart = 0xa00 -shifted12HighStart = 0x1 -type = 0 -valueWidth = 2 -index3NullOffset = 0x7fff -dataNullOffset = 0x100 -nullValue = 0x5 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,1,0x720,2,0x7a0,3,0x8a0,4,0x110000,5 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.small16.toml deleted file mode 100644 index 1e761f166ca3..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/grow-data.small16.toml +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: grow-data.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "grow-data.small16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x80,0xa0,0xc0, - 0xc0,0xc0,0xe0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100 -] -data_16 = [ - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0xad -] -indexLength = 64 -dataLength = 322 -highStart = 0xa00 -shifted12HighStart = 0x1 -type = 1 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x100 -nullValue = 0x5 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,1,0x720,2,0x7a0,3,0x8a0,4,0x110000,5 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/planes.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/planes.toml deleted file mode 100644 index d5f5e7d81603..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/planes.toml +++ /dev/null @@ -1,140 +0,0 @@ -# This file is part of ICU4X. For terms of use, please see the file -# called LICENSE at the top level of the ICU4X source tree -# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -[code_point_map.data] -long_name = "planes" -name = "planes" -ranges = [ - [0x0, 0xffff, 0], - [0x10000, 0x1ffff, 1], - [0x20000, 0x2ffff, 2], - [0x30000, 0x3ffff, 3], - [0x40000, 0x4ffff, 4], - [0x50000, 0x5ffff, 5], - [0x60000, 0x6ffff, 6], - [0x70000, 0x7ffff, 7], - [0x80000, 0x8ffff, 8], - [0x90000, 0x9ffff, 9], - [0xa0000, 0xaffff, 10], - [0xb0000, 0xbffff, 11], - [0xc0000, 0xcffff, 12], - [0xd0000, 0xdffff, 13], - [0xe0000, 0xeffff, 14], - [0xf0000, 0xfffff, 15], - [0x100000, 0x10ffff, 16], -] - -[code_point_trie.struct] -long_name = "planes" -name = "planes" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x288,0x290,0x290,0x290,0x2b0,0x2b0,0x2b0,0x2b0,0x2d0,0x2d0,0x2d0,0x2d0,0x2f0,0x2f0,0x2f0,0x2f0, - 0x310,0x310,0x310,0x310,0x330,0x330,0x330,0x330,0x350,0x350,0x350,0x350,0x370,0x370,0x370,0x370, - 0x390,0x390,0x390,0x390,0x3b0,0x3b0,0x3b0,0x3b0,0x3d0,0x3d0,0x3d0,0x3d0,0x3f0,0x3f0,0x3f0,0x3f0, - 0x410,0x410,0x410,0x410,0x430,0x430,0x430,0x430,0x450,0x450,0x450,0x450,0x470,0x470,0x470,0x470, - 0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0,0x10,0x20,0x30,0,0x10,0x20,0x30, - 0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30, - 0,0x10,0x20,0x30,0,0x10,0x20,0x30,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0, - 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0, - 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0, - 0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0, - 0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0, - 0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0, - 0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, - 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, - 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100, - 0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110, - 0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110, - 0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120, - 0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120, - 0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130, - 0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130, - 0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140, - 0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140, - 0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150, - 0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150, - 0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160, - 0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160, - 0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8, - 0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8, - 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8, - 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8, - 0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8, - 0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8, - 0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108, - 0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108, - 0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128, - 0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128, - 0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148, - 0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148, - 0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168, - 0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168, - 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, - 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, - 0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8, - 0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8, - 0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, - 0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, - 0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8, - 0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8, - 0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208, - 0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208, - 0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228, - 0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228, - 0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248, - 0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248, - 0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268, - 0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268 -] -data_8 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, - 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, - 0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0x10,0x10,0x10,0 -] -indexLength = 1168 -dataLength = 372 -highStart = 0x100000 -shifted12HighStart = 0x100 -type = 1 -valueWidth = 2 -index3NullOffset = 0x2 -dataNullOffset = 0x0 -nullValue = 0x0 diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.16.toml deleted file mode 100644 index b9ec8ed16ec9..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.16.toml +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set-empty.16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set-empty.16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_16 = [ - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,0xad -] -indexLength = 1024 -dataLength = 130 -highStart = 0x0 -shifted12HighStart = 0x0 -type = 0 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x3 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,3,0x110000,3 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.32.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.32.toml deleted file mode 100644 index cc3e16726431..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.32.toml +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set-empty.32 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set-empty.32" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_32 = [ - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 0xad -] -indexLength = 1024 -dataLength = 129 -highStart = 0x0 -shifted12HighStart = 0x0 -type = 0 -valueWidth = 1 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x3 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,3,0x110000,3 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.8.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.8.toml deleted file mode 100644 index 5ce7bba5b5f5..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.8.toml +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set-empty.8 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set-empty.8" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_8 = [ - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,0xad -] -indexLength = 1024 -dataLength = 132 -highStart = 0x0 -shifted12HighStart = 0x0 -type = 0 -valueWidth = 2 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x3 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,3,0x110000,3 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.small16.toml deleted file mode 100644 index f61d9fe18ad1..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-empty.small16.toml +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set-empty.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set-empty.small16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_16 = [ - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,0xad -] -indexLength = 64 -dataLength = 130 -highStart = 0x0 -shifted12HighStart = 0x0 -type = 1 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x3 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,3,0x110000,3 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.16.toml deleted file mode 100644 index 6eac4b7bdc8a..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.16.toml +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set-single-value.16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set-single-value.16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_16 = [ - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0xad -] -indexLength = 1024 -dataLength = 130 -highStart = 0x0 -shifted12HighStart = 0x0 -type = 0 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x5 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,3,0x110000,5 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.32.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.32.toml deleted file mode 100644 index 9db848236d6a..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.32.toml +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set-single-value.32 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set-single-value.32" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_32 = [ - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 0xad -] -indexLength = 1024 -dataLength = 129 -highStart = 0x0 -shifted12HighStart = 0x0 -type = 0 -valueWidth = 1 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x5 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,3,0x110000,5 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.8.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.8.toml deleted file mode 100644 index c92b7a8e1e5d..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.8.toml +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set-single-value.8 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set-single-value.8" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_8 = [ - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,0xad -] -indexLength = 1024 -dataLength = 132 -highStart = 0x0 -shifted12HighStart = 0x0 -type = 0 -valueWidth = 2 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x5 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,3,0x110000,5 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.small16.toml deleted file mode 100644 index 568362f5565a..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set-single-value.small16.toml +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set-single-value.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set-single-value.small16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -] -data_16 = [ - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,0xad -] -indexLength = 64 -dataLength = 130 -highStart = 0x0 -shifted12HighStart = 0x0 -type = 1 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x0 -nullValue = 0x5 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,3,0x110000,5 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.16.toml deleted file mode 100644 index e064217ae6f5..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.16.toml +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set1.16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set1.16" -index = [ - 0,0x40,0x40,0x59,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xb3,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xfb,0x121,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x14d,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x495,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x4bc,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4df,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x1ba,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x1c6,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0x1d3,0x1da,0x1da,0x1da,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x439,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x455,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x475 -] -data_16 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0,0,0,0,0,0, - 0,0,0,0,0,0,0xf,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0xad -] -indexLength = 1248 -dataLength = 492 -highStart = 0xf0200 -shifted12HighStart = 0xf1 -type = 0 -valueWidth = 0 -index3NullOffset = 0x4 -dataNullOffset = 0x0 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,0,0x40,0,0xe7,0x34,0x3400,0,0x9fa6,0x61,0xda9e,0x31,0xdada,0,0xeeee,0xff, - 0x11111,1,0x44444,0x61,0xf0003,0,0xf0004,0xf,0xf0006,0x10,0xf0007,0x11,0xf0040,0x12,0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.32.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.32.toml deleted file mode 100644 index 9b7299b37ff8..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.32.toml +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set1.32 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set1.32" -index = [ - 0,0x40,0x40,0x59,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xb3,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xfb,0x121,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x14d,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x495,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x4bc,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4df,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x1ba,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x1c6,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0x1d3,0x1da,0x1da,0x1da,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x439,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x455,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x475 -] -data_32 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0,0,0,0,0,0, - 0,0,0,0,0,0,0xf,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0xad -] -indexLength = 1248 -dataLength = 492 -highStart = 0xf0200 -shifted12HighStart = 0xf1 -type = 0 -valueWidth = 1 -index3NullOffset = 0x4 -dataNullOffset = 0x0 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,0,0x40,0,0xe7,0x34,0x3400,0,0x9fa6,0x61,0xda9e,0x31,0xdada,0,0xeeee,0xff, - 0x11111,1,0x44444,0x61,0xf0003,0,0xf0004,0xf,0xf0006,0x10,0xf0007,0x11,0xf0040,0x12,0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.8.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.8.toml deleted file mode 100644 index 4d06bf9d3bb6..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.8.toml +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set1.8 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set1.8" -index = [ - 0,0x40,0x40,0x59,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xb3,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xfb,0x121,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, - 0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x14d,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x495,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x4bc,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf, - 0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4df,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b, - 0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x1ba,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x1c6,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0x1d3,0x1da,0x1da,0x1da,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x439,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x455,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x475 -] -data_8 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0,0,0,0,0,0, - 0,0,0,0,0,0,0xf,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0xad -] -indexLength = 1248 -dataLength = 492 -highStart = 0xf0200 -shifted12HighStart = 0xf1 -type = 0 -valueWidth = 2 -index3NullOffset = 0x4 -dataNullOffset = 0x0 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,0,0x40,0,0xe7,0x34,0x3400,0,0x9fa6,0x61,0xda9e,0x31,0xdada,0,0xeeee,0xff, - 0x11111,1,0x44444,0x61,0xf0003,0,0xf0004,0xf,0xf0006,0x10,0xf0007,0x11,0xf0040,0x12,0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.small16.toml deleted file mode 100644 index 1a7241775911..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set1.small16.toml +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set1.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set1.small16" -index = [ - 0,0x40,0x40,0x59,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x17f,0x199,0x1aa,0x1bd,0x1d5,0x199,0x199,0x199,0x199,0x199,0x199,0x199,0x199,0x199,0x199,0x199, - 0x199,0x1f3,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6, - 0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6, - 0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x216,0,0x10,0x20, - 0x30,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x59,0x69,0x79,0x89,0,0x10,0x20, - 0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20, - 0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xa3,0xa9,0xa9, - 0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9, - 0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xab,0, - 0,0,0xb9,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, - 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, - 0xc3,0xc3,0xc3,0xc5,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3, - 0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3, - 0xd3,0xd3,0xd3,0xd3,0xe2,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x99,0x99,0x99,0xee,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xfb, - 0x102,0x102,0x102,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x7d, - 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,0xad,0xad,0xad,0xad,0xad,0xad,0xad, - 0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad, - 0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xb3,0xce,0xce,0xce,0xce,0xce,0xce, - 0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xe5,0xf3,0xf3,0xf3,0xf3,0xf3, - 0xf3,0xf3,0xf3,0xf3,0x105,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x123,0xad,0xad, - 0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad, - 0xad,0xad,0xad,0xad,0xad,0x13f,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,0x15f -] -data_16 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0,0,0,0,0,0,0, - 0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x61,0x61,0,0,0,0,0,0,0,0,0,0,0,0,0xf,0x10, - 0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x12,0x12,0xad,0,0xad -] -indexLength = 535 -dataLength = 277 -highStart = 0xf0200 -shifted12HighStart = 0xf1 -type = 1 -valueWidth = 0 -index3NullOffset = 0x4 -dataNullOffset = 0x0 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,0,0x40,0,0xe7,0x34,0x3400,0,0x9fa6,0x61,0xda9e,0x31,0xdada,0,0xeeee,0xff, - 0x11111,1,0x44444,0x61,0xf0003,0,0xf0004,0xf,0xf0006,0x10,0xf0007,0x11,0xf0040,0x12,0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.16.toml deleted file mode 100644 index 79bed6eae236..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.16.toml +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set2-overlap.16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set2-overlap.16" -index = [ - 0,0x40,0x72,0x95,0xb3,0xb3,0xb3,0xb3,0xf2,0xf2,0xf2,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0x45e,0x45e,0x45e,0x45e,0x45e,0x45e,0x45e,0x462,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0x132,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135, - 0x13e,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x14d,0x135,0x135,0x135,0x135,0x135, - 0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135, - 0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x155,0x161,0x161,0x161,0x161, - 0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x167,0x172,0xb3,0xb3,0xb3,0xb3,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x408,0x421, - 0x42b,0x43e -] -data_16 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,0,0,0,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7a,0x7a,0x7a,0x7a,0x7a,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,2,0,0,0,0,0,0,0,0,0,0,0,7,7,7, - 7,7,0,0xad -] -indexLength = 1154 -dataLength = 388 -highStart = 0x30000 -shifted12HighStart = 0x30 -type = 0 -valueWidth = 0 -index3NullOffset = 0xb -dataNullOffset = 0xb3 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,0,0x21,0,0x72,0x5555,0xdd,3,0xde,4,0x201,0,0x240,6,0x241,0, - 0x280,6,0x281,0,0x2c0,6,0x2f883,0,0x2f987,0x7a,0x2fa98,5,0x2fedc,0x7a,0x2ffaa,1, - 0x2ffab,2,0x2ffbb,0,0x2ffc0,7,0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.32.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.32.toml deleted file mode 100644 index 7582d9608ee5..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.32.toml +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set2-overlap.32 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set2-overlap.32" -index = [ - 0,0x40,0x72,0x95,0xb3,0xb3,0xb3,0xb3,0xf2,0xf2,0xf2,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0x45e,0x45e,0x45e,0x45e,0x45e,0x45e,0x45e,0x462,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0x132,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135, - 0x13e,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x14d,0x135,0x135,0x135,0x135,0x135, - 0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135, - 0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x155,0x161,0x161,0x161,0x161, - 0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x167,0x172,0xb3,0xb3,0xb3,0xb3,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x408,0x421, - 0x42b,0x43e -] -data_32 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,0,0,0,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7a,0x7a,0x7a,0x7a,0x7a,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,2,0,0,0,0,0,0,0,0,0,0,0,7,7,7, - 7,7,0,0xad -] -indexLength = 1154 -dataLength = 388 -highStart = 0x30000 -shifted12HighStart = 0x30 -type = 0 -valueWidth = 1 -index3NullOffset = 0xb -dataNullOffset = 0xb3 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,0,0x21,0,0x72,0x5555,0xdd,3,0xde,4,0x201,0,0x240,6,0x241,0, - 0x280,6,0x281,0,0x2c0,6,0x2f883,0,0x2f987,0x7a,0x2fa98,5,0x2fedc,0x7a,0x2ffaa,1, - 0x2ffab,2,0x2ffbb,0,0x2ffc0,7,0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.small16.toml deleted file mode 100644 index 08741aca228e..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set2-overlap.small16.toml +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set2-overlap.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set2-overlap.small16" -index = [ - 0,0x40,0x72,0x95,0xb3,0xb3,0xb3,0xb3,0xf2,0xf2,0xf2,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xee,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xfa,0,0x10,0x20,0x30, - 0x40,0x50,0x60,0x70,0x72,0x82,0x92,0xa2,0x95,0xa5,0xb5,0xc5,0xb3,0xc3,0xd3,0xe3, - 0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xf2,0x102,0x112,0x122, - 0xf2,0x102,0x112,0x122,0xf2,0x102,0x112,0x122,0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3, - 0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3, - 0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0x132,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135, - 0x13e,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x14d,0x135,0x135,0x135,0x135,0x135, - 0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135, - 0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x155,0x161,0x161,0x161,0x161, - 0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x167,0x172,0xb3,0xb3,0xb3,0xb3,0x4c,0x6c, - 0x78,0x78,0x78,0x78,0x78,0x78,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xb,0xb,0xb,0xb,0xb,0xb,0x98,0xb1,0xbb,0xce -] -data_16 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555, - 0x5555,0x5555,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,0,0,0,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7a,0x7a,0x7a,0x7a,0x7a,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,2,0,0,0,0,0,0,0,0,0,0,0,7,7,7, - 7,7,0,0xad -] -indexLength = 282 -dataLength = 388 -highStart = 0x30000 -shifted12HighStart = 0x30 -type = 1 -valueWidth = 0 -index3NullOffset = 0xb -dataNullOffset = 0xb3 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,0,0x21,0,0x72,0x5555,0xdd,3,0xde,4,0x201,0,0x240,6,0x241,0, - 0x280,6,0x281,0,0x2c0,6,0x2f883,0,0x2f987,0x7a,0x2fa98,5,0x2fedc,0x7a,0x2ffaa,1, - 0x2ffab,2,0x2ffbb,0,0x2ffc0,7,0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.16.toml deleted file mode 100644 index c94365e84cc9..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.16.toml +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set3-initial-9.16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set3-initial-9.16" -index = [ - 0,0x40,0x5c,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf7,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x177, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x1a6,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x1da,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6 -] -data_16 = [ - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,9,9,9,9,9,9,9,9,9, - 9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,0xad -] -indexLength = 1024 -dataLength = 552 -highStart = 0xce00 -shifted12HighStart = 0xd -type = 0 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0x80 -nullValue = 0x9 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,9,0x31,9,0xa4,1,0x3400,9,0x6789,2,0x9000,9,0xa000,4,0xabcd,9, - 0xbcde,3,0xcccc,9,0x110000,6 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.32.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.32.toml deleted file mode 100644 index 1a0c9732c8df..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.32.toml +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set3-initial-9.32 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set3-initial-9.32" -index = [ - 0,0x40,0x5c,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf7,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x177, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x1a6,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x1da,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6 -] -data_32 = [ - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,9,9,9,9,9,9,9,9,9, - 9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,0xad -] -indexLength = 1024 -dataLength = 551 -highStart = 0xce00 -shifted12HighStart = 0xd -type = 0 -valueWidth = 1 -index3NullOffset = 0x7fff -dataNullOffset = 0x80 -nullValue = 0x9 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,9,0x31,9,0xa4,1,0x3400,9,0x6789,2,0x9000,9,0xa000,4,0xabcd,9, - 0xbcde,3,0xcccc,9,0x110000,6 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.8.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.8.toml deleted file mode 100644 index 5008268b71ac..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.8.toml +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set3-initial-9.8 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set3-initial-9.8" -index = [ - 0,0x40,0x5c,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf7,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x177, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184, - 0x184,0x184,0x184,0x1a6,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x1da,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, - 0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6 -] -data_8 = [ - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,9,9,9,9,9,9,9,9,9, - 9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,0xad -] -indexLength = 1024 -dataLength = 552 -highStart = 0xce00 -shifted12HighStart = 0xd -type = 0 -valueWidth = 2 -index3NullOffset = 0x7fff -dataNullOffset = 0x80 -nullValue = 0x9 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,9,0x31,9,0xa4,1,0x3400,9,0x6789,2,0x9000,9,0xa000,4,0xabcd,9, - 0xbcde,3,0xcccc,9,0x110000,6 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.small16.toml deleted file mode 100644 index aee1538455db..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/set3-initial-9.small16.toml +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: set3-initial-9.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "set3-initial-9.small16" -index = [ - 0,0x40,0x5c,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x11c,0x136,0x14e,0x16d,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x5c,0x6c,0x7c,0x8c, - 0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0, - 0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc7,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7, - 0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7, - 0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0xe7,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4, - 0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4, - 0xf4,0xf4,0xf4,0xf4,0xf4,0xf6,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x104,0x110,0x110,0x110,0x110,0x110,0x110,0x110, - 0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x44,0x50,0x50,0x50, - 0x50,0x50,0x50,0x50,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, - 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x78,3,3,3,3,3,3, - 3,3,3,3,3,3,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,3,3, - 3,3,3,0xb8,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xe8,3,3,3, - 3,3,3,0xfc -] -data_16 = [ - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 9,9,9,9,9,9,9,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,9,9,9,9,9,9,9,9,9, - 9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,0xad -] -indexLength = 372 -dataLength = 290 -highStart = 0xce00 -shifted12HighStart = 0xd -type = 1 -valueWidth = 0 -index3NullOffset = 0x3 -dataNullOffset = 0x80 -nullValue = 0x9 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0,9,0x31,9,0xa4,1,0x3400,9,0x6789,2,0x9000,9,0xa000,4,0xabcd,9, - 0xbcde,3,0xcccc,9,0x110000,6 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.16.toml deleted file mode 100644 index c8156e69b005..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.16.toml +++ /dev/null @@ -1,321 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: short-all-same.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "short-all-same.small16" -index = [ - 0,0x40,0x80,0xc0,0x100,0x140,0x180,0x1c0,0x200,0x240,0x280,0x2c0,0x300,0x340,0x380,0x3c0, - 0x400,0x440,0x480,0x4c0,0x500,0x540,0x580,0x5c0,0x600,0x640,0x680,0x6c0,0x700,0x740,0x780,0x7c0, - 0x800,0x840,0x880,0x8c0,0x900,0x940,0x980,0x9c0,0xa00,0xa40,0xa80,0xac0,0xb00,0xb40,0xb80,0xbc0, - 0xc00,0xc40,0xc80,0xcc0,0xd00,0xd40,0xd80,0xdc0,0xe00,0xe40,0xe80,0xec0,0xf00,0xf40,0xf80,0xfc0 -] -data_16 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, - 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, - 0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, - 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, - 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, - 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d, - 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, - 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23, - 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, - 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25, - 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26, - 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, - 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, - 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b, - 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c, - 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, - 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, - 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f, - 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32, - 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37, - 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39, - 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a, - 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b, - 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c, - 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d, - 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, - 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43, - 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, - 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45, - 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49, - 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a, - 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b, - 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c, - 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, - 0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e, - 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f, - 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50, - 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53, - 0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54, - 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, - 0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56, - 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57, - 0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58, - 0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59, - 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a, - 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b, - 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c, - 0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d, - 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e, - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62, - 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63, - 0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, - 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65, - 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, - 0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67, - 0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68, - 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69, - 0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a, - 0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b, - 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c, - 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d, - 0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e, - 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, - 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, - 0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71, - 0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72, - 0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73, - 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74, - 0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75, - 0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76, - 0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77, - 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78, - 0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79, - 0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b, - 0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c, - 0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d, - 0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, - 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, - 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82, - 0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83, - 0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84, - 0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85, - 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86, - 0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87, - 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88, - 0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89, - 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a, - 0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b, - 0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c, - 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, - 0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e, - 0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91, - 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, - 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, - 0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94, - 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95, - 0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96, - 0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97, - 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a, - 0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b, - 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c, - 0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d, - 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e, - 0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f, - 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0, - 0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1, - 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2, - 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3, - 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4, - 0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, - 0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6, - 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7, - 0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8, - 0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9, - 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, - 0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, - 0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac, - 0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad, - 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae, - 0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf, - 0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0, - 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, - 0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4, - 0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5, - 0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6, - 0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7, - 0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8, - 0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9, - 0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba, - 0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb, - 0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc, - 0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd, - 0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe, - 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1, - 0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2, - 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, - 0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, - 0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5, - 0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, - 0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7, - 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8, - 0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb, - 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, - 0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd, - 0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce, - 0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2, - 0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3, - 0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4, - 0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5, - 0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6, - 0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7, - 0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda, - 0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb, - 0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc, - 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, - 0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde, - 0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf, - 0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2, - 0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3, - 0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4, - 0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5, - 0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, - 0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7, - 0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8, - 0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9, - 0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea, - 0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb, - 0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec, - 0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed, - 0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee, - 0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef, - 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, - 0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1, - 0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2, - 0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3, - 0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4, - 0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5, - 0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, - 0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7, - 0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8, - 0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9, - 0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa, - 0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb, - 0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc, - 0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd, - 0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0,0xad -] -indexLength = 64 -dataLength = 4098 -highStart = 0x1000 -shifted12HighStart = 0x1 -type = 1 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0xfffff -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0x10,0,0x20,1,0x30,2,0x40,3,0x50,4,0x60,5,0x70,6,0x80,7, - 0x90,8,0xa0,9,0xb0,0xa,0xc0,0xb,0xd0,0xc,0xe0,0xd,0xf0,0xe,0x100,0xf, - 0x110,0x10,0x120,0x11,0x130,0x12,0x140,0x13,0x150,0x14,0x160,0x15,0x170,0x16,0x180,0x17, - 0x190,0x18,0x1a0,0x19,0x1b0,0x1a,0x1c0,0x1b,0x1d0,0x1c,0x1e0,0x1d,0x1f0,0x1e,0x200,0x1f, - 0x210,0x20,0x220,0x21,0x230,0x22,0x240,0x23,0x250,0x24,0x260,0x25,0x270,0x26,0x280,0x27, - 0x290,0x28,0x2a0,0x29,0x2b0,0x2a,0x2c0,0x2b,0x2d0,0x2c,0x2e0,0x2d,0x2f0,0x2e,0x300,0x2f, - 0x310,0x30,0x320,0x31,0x330,0x32,0x340,0x33,0x350,0x34,0x360,0x35,0x370,0x36,0x380,0x37, - 0x390,0x38,0x3a0,0x39,0x3b0,0x3a,0x3c0,0x3b,0x3d0,0x3c,0x3e0,0x3d,0x3f0,0x3e,0x400,0x3f, - 0x410,0x40,0x420,0x41,0x430,0x42,0x440,0x43,0x450,0x44,0x460,0x45,0x470,0x46,0x480,0x47, - 0x490,0x48,0x4a0,0x49,0x4b0,0x4a,0x4c0,0x4b,0x4d0,0x4c,0x4e0,0x4d,0x4f0,0x4e,0x500,0x4f, - 0x510,0x50,0x520,0x51,0x530,0x52,0x540,0x53,0x550,0x54,0x560,0x55,0x570,0x56,0x580,0x57, - 0x590,0x58,0x5a0,0x59,0x5b0,0x5a,0x5c0,0x5b,0x5d0,0x5c,0x5e0,0x5d,0x5f0,0x5e,0x600,0x5f, - 0x610,0x60,0x620,0x61,0x630,0x62,0x640,0x63,0x650,0x64,0x660,0x65,0x670,0x66,0x680,0x67, - 0x690,0x68,0x6a0,0x69,0x6b0,0x6a,0x6c0,0x6b,0x6d0,0x6c,0x6e0,0x6d,0x6f0,0x6e,0x700,0x6f, - 0x710,0x70,0x720,0x71,0x730,0x72,0x740,0x73,0x750,0x74,0x760,0x75,0x770,0x76,0x780,0x77, - 0x790,0x78,0x7a0,0x79,0x7b0,0x7a,0x7c0,0x7b,0x7d0,0x7c,0x7e0,0x7d,0x7f0,0x7e,0x800,0x7f, - 0x810,0x80,0x820,0x81,0x830,0x82,0x840,0x83,0x850,0x84,0x860,0x85,0x870,0x86,0x880,0x87, - 0x890,0x88,0x8a0,0x89,0x8b0,0x8a,0x8c0,0x8b,0x8d0,0x8c,0x8e0,0x8d,0x8f0,0x8e,0x900,0x8f, - 0x910,0x90,0x920,0x91,0x930,0x92,0x940,0x93,0x950,0x94,0x960,0x95,0x970,0x96,0x980,0x97, - 0x990,0x98,0x9a0,0x99,0x9b0,0x9a,0x9c0,0x9b,0x9d0,0x9c,0x9e0,0x9d,0x9f0,0x9e,0xa00,0x9f, - 0xa10,0xa0,0xa20,0xa1,0xa30,0xa2,0xa40,0xa3,0xa50,0xa4,0xa60,0xa5,0xa70,0xa6,0xa80,0xa7, - 0xa90,0xa8,0xaa0,0xa9,0xab0,0xaa,0xac0,0xab,0xad0,0xac,0xae0,0xad,0xaf0,0xae,0xb00,0xaf, - 0xb10,0xb0,0xb20,0xb1,0xb30,0xb2,0xb40,0xb3,0xb50,0xb4,0xb60,0xb5,0xb70,0xb6,0xb80,0xb7, - 0xb90,0xb8,0xba0,0xb9,0xbb0,0xba,0xbc0,0xbb,0xbd0,0xbc,0xbe0,0xbd,0xbf0,0xbe,0xc00,0xbf, - 0xc10,0xc0,0xc20,0xc1,0xc30,0xc2,0xc40,0xc3,0xc50,0xc4,0xc60,0xc5,0xc70,0xc6,0xc80,0xc7, - 0xc90,0xc8,0xca0,0xc9,0xcb0,0xca,0xcc0,0xcb,0xcd0,0xcc,0xce0,0xcd,0xcf0,0xce,0xd00,0xcf, - 0xd10,0xd0,0xd20,0xd1,0xd30,0xd2,0xd40,0xd3,0xd50,0xd4,0xd60,0xd5,0xd70,0xd6,0xd80,0xd7, - 0xd90,0xd8,0xda0,0xd9,0xdb0,0xda,0xdc0,0xdb,0xdd0,0xdc,0xde0,0xdd,0xdf0,0xde,0xe00,0xdf, - 0xe10,0xe0,0xe20,0xe1,0xe30,0xe2,0xe40,0xe3,0xe50,0xe4,0xe60,0xe5,0xe70,0xe6,0xe80,0xe7, - 0xe90,0xe8,0xea0,0xe9,0xeb0,0xea,0xec0,0xeb,0xed0,0xec,0xee0,0xed,0xef0,0xee,0xf00,0xef, - 0xf10,0xf0,0xf20,0xf1,0xf30,0xf2,0xf40,0xf3,0xf50,0xf4,0xf60,0xf5,0xf70,0xf6,0xf80,0xf7, - 0xf90,0xf8,0xfa0,0xf9,0xfb0,0xfa,0xfc0,0xfb,0xfd0,0xfc,0xfe0,0xfd,0xff0,0xfe,0x1000,0xff, - 0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.8.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.8.toml deleted file mode 100644 index e1b264884780..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.8.toml +++ /dev/null @@ -1,385 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: short-all-same.8 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "short-all-same.8" -index = [ - 0,0x40,0x80,0xc0,0x100,0x140,0x180,0x1c0,0x200,0x240,0x280,0x2c0,0x300,0x340,0x380,0x3c0, - 0x400,0x440,0x480,0x4c0,0x500,0x540,0x580,0x5c0,0x600,0x640,0x680,0x6c0,0x700,0x740,0x780,0x7c0, - 0x800,0x840,0x880,0x8c0,0x900,0x940,0x980,0x9c0,0xa00,0xa40,0xa80,0xac0,0xb00,0xb40,0xb80,0xbc0, - 0xc00,0xc40,0xc80,0xcc0,0xd00,0xd40,0xd80,0xdc0,0xe00,0xe40,0xe80,0xec0,0xf00,0xf40,0xf80,0xfc0, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, - 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000 -] -data_8 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, - 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, - 0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, - 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, - 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, - 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d, - 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, - 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23, - 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, - 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25, - 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26, - 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, - 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, - 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b, - 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c, - 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, - 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, - 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f, - 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32, - 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37, - 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39, - 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a, - 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b, - 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c, - 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d, - 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, - 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43, - 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, - 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45, - 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49, - 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a, - 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b, - 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c, - 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, - 0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e, - 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f, - 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50, - 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53, - 0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54, - 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, - 0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56, - 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57, - 0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58, - 0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59, - 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a, - 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b, - 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c, - 0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d, - 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e, - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62, - 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63, - 0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, - 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65, - 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, - 0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67, - 0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68, - 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69, - 0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a, - 0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b, - 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c, - 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d, - 0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e, - 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, - 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, - 0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71, - 0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72, - 0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73, - 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74, - 0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75, - 0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76, - 0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77, - 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78, - 0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79, - 0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b, - 0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c, - 0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d, - 0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, - 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, - 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82, - 0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83, - 0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84, - 0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85, - 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86, - 0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87, - 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88, - 0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89, - 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a, - 0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b, - 0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c, - 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, - 0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e, - 0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91, - 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, - 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, - 0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94, - 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95, - 0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96, - 0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97, - 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a, - 0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b, - 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c, - 0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d, - 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e, - 0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f, - 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0, - 0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1, - 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2, - 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3, - 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4, - 0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, - 0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6, - 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7, - 0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8, - 0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9, - 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, - 0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, - 0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac, - 0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad, - 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae, - 0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf, - 0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0, - 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, - 0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4, - 0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5, - 0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6, - 0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7, - 0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8, - 0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9, - 0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba, - 0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb, - 0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc, - 0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd, - 0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe, - 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1, - 0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2, - 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, - 0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, - 0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5, - 0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, - 0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7, - 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8, - 0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb, - 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, - 0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd, - 0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce, - 0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2, - 0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3, - 0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4, - 0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5, - 0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6, - 0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7, - 0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda, - 0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb, - 0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc, - 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, - 0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde, - 0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf, - 0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2, - 0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3, - 0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4, - 0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5, - 0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, - 0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7, - 0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8, - 0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9, - 0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea, - 0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb, - 0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec, - 0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed, - 0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee, - 0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef, - 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, - 0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1, - 0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2, - 0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3, - 0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4, - 0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5, - 0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, - 0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7, - 0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8, - 0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9, - 0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa, - 0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb, - 0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc, - 0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd, - 0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0xad -] -indexLength = 1024 -dataLength = 4164 -highStart = 0x1000 -shifted12HighStart = 0x1 -type = 0 -valueWidth = 2 -index3NullOffset = 0x7fff -dataNullOffset = 0x1000 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0x10,0,0x20,1,0x30,2,0x40,3,0x50,4,0x60,5,0x70,6,0x80,7, - 0x90,8,0xa0,9,0xb0,0xa,0xc0,0xb,0xd0,0xc,0xe0,0xd,0xf0,0xe,0x100,0xf, - 0x110,0x10,0x120,0x11,0x130,0x12,0x140,0x13,0x150,0x14,0x160,0x15,0x170,0x16,0x180,0x17, - 0x190,0x18,0x1a0,0x19,0x1b0,0x1a,0x1c0,0x1b,0x1d0,0x1c,0x1e0,0x1d,0x1f0,0x1e,0x200,0x1f, - 0x210,0x20,0x220,0x21,0x230,0x22,0x240,0x23,0x250,0x24,0x260,0x25,0x270,0x26,0x280,0x27, - 0x290,0x28,0x2a0,0x29,0x2b0,0x2a,0x2c0,0x2b,0x2d0,0x2c,0x2e0,0x2d,0x2f0,0x2e,0x300,0x2f, - 0x310,0x30,0x320,0x31,0x330,0x32,0x340,0x33,0x350,0x34,0x360,0x35,0x370,0x36,0x380,0x37, - 0x390,0x38,0x3a0,0x39,0x3b0,0x3a,0x3c0,0x3b,0x3d0,0x3c,0x3e0,0x3d,0x3f0,0x3e,0x400,0x3f, - 0x410,0x40,0x420,0x41,0x430,0x42,0x440,0x43,0x450,0x44,0x460,0x45,0x470,0x46,0x480,0x47, - 0x490,0x48,0x4a0,0x49,0x4b0,0x4a,0x4c0,0x4b,0x4d0,0x4c,0x4e0,0x4d,0x4f0,0x4e,0x500,0x4f, - 0x510,0x50,0x520,0x51,0x530,0x52,0x540,0x53,0x550,0x54,0x560,0x55,0x570,0x56,0x580,0x57, - 0x590,0x58,0x5a0,0x59,0x5b0,0x5a,0x5c0,0x5b,0x5d0,0x5c,0x5e0,0x5d,0x5f0,0x5e,0x600,0x5f, - 0x610,0x60,0x620,0x61,0x630,0x62,0x640,0x63,0x650,0x64,0x660,0x65,0x670,0x66,0x680,0x67, - 0x690,0x68,0x6a0,0x69,0x6b0,0x6a,0x6c0,0x6b,0x6d0,0x6c,0x6e0,0x6d,0x6f0,0x6e,0x700,0x6f, - 0x710,0x70,0x720,0x71,0x730,0x72,0x740,0x73,0x750,0x74,0x760,0x75,0x770,0x76,0x780,0x77, - 0x790,0x78,0x7a0,0x79,0x7b0,0x7a,0x7c0,0x7b,0x7d0,0x7c,0x7e0,0x7d,0x7f0,0x7e,0x800,0x7f, - 0x810,0x80,0x820,0x81,0x830,0x82,0x840,0x83,0x850,0x84,0x860,0x85,0x870,0x86,0x880,0x87, - 0x890,0x88,0x8a0,0x89,0x8b0,0x8a,0x8c0,0x8b,0x8d0,0x8c,0x8e0,0x8d,0x8f0,0x8e,0x900,0x8f, - 0x910,0x90,0x920,0x91,0x930,0x92,0x940,0x93,0x950,0x94,0x960,0x95,0x970,0x96,0x980,0x97, - 0x990,0x98,0x9a0,0x99,0x9b0,0x9a,0x9c0,0x9b,0x9d0,0x9c,0x9e0,0x9d,0x9f0,0x9e,0xa00,0x9f, - 0xa10,0xa0,0xa20,0xa1,0xa30,0xa2,0xa40,0xa3,0xa50,0xa4,0xa60,0xa5,0xa70,0xa6,0xa80,0xa7, - 0xa90,0xa8,0xaa0,0xa9,0xab0,0xaa,0xac0,0xab,0xad0,0xac,0xae0,0xad,0xaf0,0xae,0xb00,0xaf, - 0xb10,0xb0,0xb20,0xb1,0xb30,0xb2,0xb40,0xb3,0xb50,0xb4,0xb60,0xb5,0xb70,0xb6,0xb80,0xb7, - 0xb90,0xb8,0xba0,0xb9,0xbb0,0xba,0xbc0,0xbb,0xbd0,0xbc,0xbe0,0xbd,0xbf0,0xbe,0xc00,0xbf, - 0xc10,0xc0,0xc20,0xc1,0xc30,0xc2,0xc40,0xc3,0xc50,0xc4,0xc60,0xc5,0xc70,0xc6,0xc80,0xc7, - 0xc90,0xc8,0xca0,0xc9,0xcb0,0xca,0xcc0,0xcb,0xcd0,0xcc,0xce0,0xcd,0xcf0,0xce,0xd00,0xcf, - 0xd10,0xd0,0xd20,0xd1,0xd30,0xd2,0xd40,0xd3,0xd50,0xd4,0xd60,0xd5,0xd70,0xd6,0xd80,0xd7, - 0xd90,0xd8,0xda0,0xd9,0xdb0,0xda,0xdc0,0xdb,0xdd0,0xdc,0xde0,0xdd,0xdf0,0xde,0xe00,0xdf, - 0xe10,0xe0,0xe20,0xe1,0xe30,0xe2,0xe40,0xe3,0xe50,0xe4,0xe60,0xe5,0xe70,0xe6,0xe80,0xe7, - 0xe90,0xe8,0xea0,0xe9,0xeb0,0xea,0xec0,0xeb,0xed0,0xec,0xee0,0xed,0xef0,0xee,0xf00,0xef, - 0xf10,0xf0,0xf20,0xf1,0xf30,0xf2,0xf40,0xf3,0xf50,0xf4,0xf60,0xf5,0xf70,0xf6,0xf80,0xf7, - 0xf90,0xf8,0xfa0,0xf9,0xfb0,0xfa,0xfc0,0xfb,0xfd0,0xfc,0xfe0,0xfd,0xff0,0xfe,0x1000,0xff, - 0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.small16.toml deleted file mode 100644 index c8156e69b005..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/short-all-same.small16.toml +++ /dev/null @@ -1,321 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: short-all-same.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "short-all-same.small16" -index = [ - 0,0x40,0x80,0xc0,0x100,0x140,0x180,0x1c0,0x200,0x240,0x280,0x2c0,0x300,0x340,0x380,0x3c0, - 0x400,0x440,0x480,0x4c0,0x500,0x540,0x580,0x5c0,0x600,0x640,0x680,0x6c0,0x700,0x740,0x780,0x7c0, - 0x800,0x840,0x880,0x8c0,0x900,0x940,0x980,0x9c0,0xa00,0xa40,0xa80,0xac0,0xb00,0xb40,0xb80,0xbc0, - 0xc00,0xc40,0xc80,0xcc0,0xd00,0xd40,0xd80,0xdc0,0xe00,0xe40,0xe80,0xec0,0xf00,0xf40,0xf80,0xfc0 -] -data_16 = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, - 0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb, - 0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, - 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, - 0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe, - 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, - 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, - 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, - 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16, - 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, - 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, - 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, - 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, - 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d, - 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, - 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23, - 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, - 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25, - 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26, - 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, - 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, - 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b, - 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c, - 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, - 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, - 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f, - 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, - 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, - 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32, - 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, - 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37, - 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39, - 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a, - 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b, - 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c, - 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d, - 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e, - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, - 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, - 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43, - 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, - 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45, - 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49, - 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a, - 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b, - 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c, - 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, - 0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e, - 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f, - 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50, - 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53, - 0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54, - 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, - 0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56, - 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57, - 0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58, - 0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59, - 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a, - 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b, - 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c, - 0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d, - 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e, - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61, - 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62, - 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63, - 0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, - 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65, - 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, - 0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67, - 0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68, - 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69, - 0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a, - 0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b, - 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c, - 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d, - 0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e, - 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, - 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, - 0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71, - 0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72, - 0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73, - 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74, - 0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75, - 0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76, - 0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77, - 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78, - 0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79, - 0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a, - 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b, - 0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c, - 0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d, - 0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, - 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, - 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82, - 0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83, - 0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84, - 0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85, - 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86, - 0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87, - 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88, - 0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89, - 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a, - 0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b, - 0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c, - 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, - 0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e, - 0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91, - 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, - 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, - 0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94, - 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95, - 0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96, - 0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97, - 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98, - 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, - 0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a, - 0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b, - 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c, - 0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d, - 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e, - 0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f, - 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0, - 0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1, - 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2, - 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3, - 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4, - 0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, - 0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6, - 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7, - 0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8, - 0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9, - 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, - 0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, - 0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac, - 0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad, - 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae, - 0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf, - 0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0, - 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, - 0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, - 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3, - 0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4, - 0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5, - 0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6, - 0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7, - 0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8, - 0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9, - 0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba, - 0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb, - 0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc, - 0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd, - 0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe, - 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, - 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1, - 0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2, - 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, - 0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, - 0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5, - 0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, - 0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7, - 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8, - 0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb, - 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, - 0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd, - 0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce, - 0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2, - 0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3, - 0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4, - 0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5, - 0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6, - 0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7, - 0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8, - 0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9, - 0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda, - 0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb, - 0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc, - 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, - 0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde, - 0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf, - 0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2, - 0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3, - 0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4, - 0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5, - 0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6, - 0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7, - 0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8, - 0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9, - 0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea, - 0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb, - 0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec, - 0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed, - 0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee, - 0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef, - 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, - 0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1, - 0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2, - 0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3, - 0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4, - 0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5, - 0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, - 0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7, - 0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8, - 0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9, - 0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa, - 0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb, - 0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc, - 0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd, - 0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0,0xad -] -indexLength = 64 -dataLength = 4098 -highStart = 0x1000 -shifted12HighStart = 0x1 -type = 1 -valueWidth = 0 -index3NullOffset = 0x7fff -dataNullOffset = 0xfffff -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0x10,0,0x20,1,0x30,2,0x40,3,0x50,4,0x60,5,0x70,6,0x80,7, - 0x90,8,0xa0,9,0xb0,0xa,0xc0,0xb,0xd0,0xc,0xe0,0xd,0xf0,0xe,0x100,0xf, - 0x110,0x10,0x120,0x11,0x130,0x12,0x140,0x13,0x150,0x14,0x160,0x15,0x170,0x16,0x180,0x17, - 0x190,0x18,0x1a0,0x19,0x1b0,0x1a,0x1c0,0x1b,0x1d0,0x1c,0x1e0,0x1d,0x1f0,0x1e,0x200,0x1f, - 0x210,0x20,0x220,0x21,0x230,0x22,0x240,0x23,0x250,0x24,0x260,0x25,0x270,0x26,0x280,0x27, - 0x290,0x28,0x2a0,0x29,0x2b0,0x2a,0x2c0,0x2b,0x2d0,0x2c,0x2e0,0x2d,0x2f0,0x2e,0x300,0x2f, - 0x310,0x30,0x320,0x31,0x330,0x32,0x340,0x33,0x350,0x34,0x360,0x35,0x370,0x36,0x380,0x37, - 0x390,0x38,0x3a0,0x39,0x3b0,0x3a,0x3c0,0x3b,0x3d0,0x3c,0x3e0,0x3d,0x3f0,0x3e,0x400,0x3f, - 0x410,0x40,0x420,0x41,0x430,0x42,0x440,0x43,0x450,0x44,0x460,0x45,0x470,0x46,0x480,0x47, - 0x490,0x48,0x4a0,0x49,0x4b0,0x4a,0x4c0,0x4b,0x4d0,0x4c,0x4e0,0x4d,0x4f0,0x4e,0x500,0x4f, - 0x510,0x50,0x520,0x51,0x530,0x52,0x540,0x53,0x550,0x54,0x560,0x55,0x570,0x56,0x580,0x57, - 0x590,0x58,0x5a0,0x59,0x5b0,0x5a,0x5c0,0x5b,0x5d0,0x5c,0x5e0,0x5d,0x5f0,0x5e,0x600,0x5f, - 0x610,0x60,0x620,0x61,0x630,0x62,0x640,0x63,0x650,0x64,0x660,0x65,0x670,0x66,0x680,0x67, - 0x690,0x68,0x6a0,0x69,0x6b0,0x6a,0x6c0,0x6b,0x6d0,0x6c,0x6e0,0x6d,0x6f0,0x6e,0x700,0x6f, - 0x710,0x70,0x720,0x71,0x730,0x72,0x740,0x73,0x750,0x74,0x760,0x75,0x770,0x76,0x780,0x77, - 0x790,0x78,0x7a0,0x79,0x7b0,0x7a,0x7c0,0x7b,0x7d0,0x7c,0x7e0,0x7d,0x7f0,0x7e,0x800,0x7f, - 0x810,0x80,0x820,0x81,0x830,0x82,0x840,0x83,0x850,0x84,0x860,0x85,0x870,0x86,0x880,0x87, - 0x890,0x88,0x8a0,0x89,0x8b0,0x8a,0x8c0,0x8b,0x8d0,0x8c,0x8e0,0x8d,0x8f0,0x8e,0x900,0x8f, - 0x910,0x90,0x920,0x91,0x930,0x92,0x940,0x93,0x950,0x94,0x960,0x95,0x970,0x96,0x980,0x97, - 0x990,0x98,0x9a0,0x99,0x9b0,0x9a,0x9c0,0x9b,0x9d0,0x9c,0x9e0,0x9d,0x9f0,0x9e,0xa00,0x9f, - 0xa10,0xa0,0xa20,0xa1,0xa30,0xa2,0xa40,0xa3,0xa50,0xa4,0xa60,0xa5,0xa70,0xa6,0xa80,0xa7, - 0xa90,0xa8,0xaa0,0xa9,0xab0,0xaa,0xac0,0xab,0xad0,0xac,0xae0,0xad,0xaf0,0xae,0xb00,0xaf, - 0xb10,0xb0,0xb20,0xb1,0xb30,0xb2,0xb40,0xb3,0xb50,0xb4,0xb60,0xb5,0xb70,0xb6,0xb80,0xb7, - 0xb90,0xb8,0xba0,0xb9,0xbb0,0xba,0xbc0,0xbb,0xbd0,0xbc,0xbe0,0xbd,0xbf0,0xbe,0xc00,0xbf, - 0xc10,0xc0,0xc20,0xc1,0xc30,0xc2,0xc40,0xc3,0xc50,0xc4,0xc60,0xc5,0xc70,0xc6,0xc80,0xc7, - 0xc90,0xc8,0xca0,0xc9,0xcb0,0xca,0xcc0,0xcb,0xcd0,0xcc,0xce0,0xcd,0xcf0,0xce,0xd00,0xcf, - 0xd10,0xd0,0xd20,0xd1,0xd30,0xd2,0xd40,0xd3,0xd50,0xd4,0xd60,0xd5,0xd70,0xd6,0xd80,0xd7, - 0xd90,0xd8,0xda0,0xd9,0xdb0,0xda,0xdc0,0xdb,0xdd0,0xdc,0xde0,0xdd,0xdf0,0xde,0xe00,0xdf, - 0xe10,0xe0,0xe20,0xe1,0xe30,0xe2,0xe40,0xe3,0xe50,0xe4,0xe60,0xe5,0xe70,0xe6,0xe80,0xe7, - 0xe90,0xe8,0xea0,0xe9,0xeb0,0xea,0xec0,0xeb,0xed0,0xec,0xee0,0xed,0xef0,0xee,0xf00,0xef, - 0xf10,0xf0,0xf20,0xf1,0xf30,0xf2,0xf40,0xf3,0xf50,0xf4,0xf60,0xf5,0xf70,0xf6,0xf80,0xf7, - 0xf90,0xf8,0xfa0,0xf9,0xfb0,0xfa,0xfc0,0xfb,0xfd0,0xfc,0xfe0,0xfd,0xff0,0xfe,0x1000,0xff, - 0x110000,0 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.16.toml deleted file mode 100644 index 56163ddaad97..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.16.toml +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: small0-in-fast.16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "small0-in-fast.16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0xd0,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0x424,0x424,0x424,0x424,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd1,0xd1,0xd1,0xd1,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404, - 0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404, - 0x404,0x404,0x404,0x404 -] -data_16 = [ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,0xad,9,0xad -] -indexLength = 1092 -dataLength = 292 -highStart = 0x20000 -shifted12HighStart = 0x20 -type = 0 -valueWidth = 0 -index3NullOffset = 0x404 -dataNullOffset = 0xd1 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0x880,1,0x890,0,0x1040,2,0x1051,0,0x10000,3,0x20000,0,0x110000,9 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.32.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.32.toml deleted file mode 100644 index 9d4685ba2f86..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.32.toml +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: small0-in-fast.32 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "small0-in-fast.32" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0xd0,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0x424,0x424,0x424,0x424,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd1,0xd1,0xd1,0xd1,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404, - 0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404, - 0x404,0x404,0x404,0x404 -] -data_32 = [ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,9,0xad -] -indexLength = 1092 -dataLength = 291 -highStart = 0x20000 -shifted12HighStart = 0x20 -type = 0 -valueWidth = 1 -index3NullOffset = 0x404 -dataNullOffset = 0xd1 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0x880,1,0x890,0,0x1040,2,0x1051,0,0x10000,3,0x20000,0,0x110000,9 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.8.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.8.toml deleted file mode 100644 index 8f42007065c9..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.8.toml +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: small0-in-fast.8 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "small0-in-fast.8" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0xd0,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, - 0x424,0x424,0x424,0x424,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1, - 0xd1,0xd1,0xd1,0xd1,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404, - 0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404, - 0x404,0x404,0x404,0x404 -] -data_8 = [ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 3,9,9,0xad -] -indexLength = 1092 -dataLength = 292 -highStart = 0x20000 -shifted12HighStart = 0x20 -type = 0 -valueWidth = 2 -index3NullOffset = 0x404 -dataNullOffset = 0xd1 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0x880,1,0x890,0,0x1040,2,0x1051,0,0x10000,3,0x20000,0,0x110000,9 -] diff --git a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.small16.toml b/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.small16.toml deleted file mode 100644 index dd203a39de69..000000000000 --- a/deps/crates/vendor/icu_collections-v2/tests/data/cpt/small0-in-fast.small16.toml +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright (C) 2021 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# -# file name: small0-in-fast.small16 -# -# machine-generated by: ucptrietest.c - -[code_point_trie.struct] -name = "small0-in-fast.small16" -index = [ - 0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, - 0xda,0xe3,0xe3,0xe3,0x103,0x103,0x103,0x103,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70, - 0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30, - 0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30, - 0x80,0x90,0xa0,0xb0,0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0, - 0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0, - 0x90,0xa0,0xb0,0xc0,0x90,0x90,0x90,0x90,0xd0,0xdf,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0, - 0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0, - 0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0, - 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x48,0x50,0x50,0x50,0x68,0x74, - 0x74,0x74,0x94,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a, - 0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a, - 0x9a,0x9a,0x9a,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba, - 0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba, - 0xba,0xba,0xba -] -data_16 = [ - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 0xad,9,0xad -] -indexLength = 291 -dataLength = 243 -highStart = 0x20000 -shifted12HighStart = 0x20 -type = 1 -valueWidth = 0 -index3NullOffset = 0xba -dataNullOffset = 0xd0 -nullValue = 0x0 - -[code_point_trie.testdata] -# Array of (limit, value) pairs -checkRanges = [ - 0x880,1,0x890,0,0x1040,2,0x1051,0,0x10000,3,0x20000,0,0x110000,9 -] diff --git a/deps/crates/vendor/icu_locale-v2/.cargo_vcs_info.json b/deps/crates/vendor/icu_locale-v2/.cargo_vcs_info.json deleted file mode 100644 index 0064f117e0b1..000000000000 --- a/deps/crates/vendor/icu_locale-v2/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "c9fac4e625ccb2c6a7aa35079fff9709db4385ac" - }, - "path_in_vcs": "components/locale" -} \ No newline at end of file diff --git a/deps/crates/vendor/icu_locale-v2/Cargo.lock b/deps/crates/vendor/icu_locale-v2/Cargo.lock deleted file mode 100644 index 245cb515af5f..000000000000 --- a/deps/crates/vendor/icu_locale-v2/Cargo.lock +++ /dev/null @@ -1,833 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "anes" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "bumpalo" -version = "3.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" - -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "clap" -version = "4.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" -dependencies = [ - "clap_builder", -] - -[[package]] -name = "clap_builder" -version = "4.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" -dependencies = [ - "anstyle", - "clap_lex", -] - -[[package]] -name = "clap_lex" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" - -[[package]] -name = "cobs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" -dependencies = [ - "thiserror", -] - -[[package]] -name = "criterion" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" -dependencies = [ - "anes", - "cast", - "ciborium", - "clap", - "criterion-plot", - "is-terminal", - "itertools", - "num-traits", - "once_cell", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" -dependencies = [ - "cast", - "itertools", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "databake" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4b1db5ca40636726f1f73daff0d626accbd49bcd8136fcade87d7cf1e6bbb" -dependencies = [ - "databake-derive", - "proc-macro2", - "quote", -] - -[[package]] -name = "databake-derive" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b537745234cbf0e296a3bd836d70a614dff4cb522b14e2680ef006bb1ed5ff" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "erased-serde" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" -dependencies = [ - "serde", - "serde_core", - "typeid", -] - -[[package]] -name = "half" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" -dependencies = [ - "cfg-if", - "crunchy", -] - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "icu_collections" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" -dependencies = [ - "databake", - "displaydoc", - "potential_utf", - "serde", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale" -version = "2.2.0" -dependencies = [ - "criterion", - "databake", - "icu_collections", - "icu_locale_core", - "icu_locale_data", - "icu_provider", - "potential_utf", - "serde", - "serde_json", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "databake", - "displaydoc", - "litemap", - "serde", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locale_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fdcc9ac77c6d74ff5cf6e65ef3181d6af32003b16fce3a77fb451d2f695993" - -[[package]] -name = "icu_provider" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" -dependencies = [ - "databake", - "displaydoc", - "erased-serde", - "icu_locale_core", - "postcard", - "serde", - "stable_deref_trait", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "is-terminal" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "js-sys" -version = "0.3.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "libc" -version = "0.2.183" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" - -[[package]] -name = "litemap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "oorandom" -version = "11.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" - -[[package]] -name = "plotters" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" - -[[package]] -name = "plotters-svg" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" -dependencies = [ - "plotters-backend", -] - -[[package]] -name = "postcard" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" -dependencies = [ - "cobs", - "serde", -] - -[[package]] -name = "potential_utf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" -dependencies = [ - "serde_core", - "writeable", - "zerovec", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "regex" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tinystr" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" -dependencies = [ - "databake", - "displaydoc", - "serde_core", - "zerovec", -] - -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "yoke" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerofrom" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerotrie" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "zerovec" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" -dependencies = [ - "databake", - "serde", - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/deps/crates/vendor/icu_locale-v2/Cargo.toml b/deps/crates/vendor/icu_locale-v2/Cargo.toml deleted file mode 100644 index ea69b0cb6a28..000000000000 --- a/deps/crates/vendor/icu_locale-v2/Cargo.toml +++ /dev/null @@ -1,217 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2021" -rust-version = "1.86" -name = "icu_locale" -version = "2.2.0" -authors = ["The ICU4X Project Developers"] -build = false -include = [ - "data/**/*", - "src/**/*", - "examples/**/*", - "benches/**/*", - "tests/**/*", - "Cargo.toml", - "LICENSE", - "README.md", - "build.rs", -] -autolib = false -autobins = false -autoexamples = false -autotests = false -autobenches = false -description = "API for Unicode Language and Locale Identifiers canonicalization" -homepage = "https://icu4x.unicode.org" -readme = "README.md" -keywords = [ - "unicode", - "language-tags", - "bcp47", -] -categories = [ - "internationalization", - "localization", - "no-std", - "embedded", -] -license = "Unicode-3.0" -repository = "https://github.com/unicode-org/icu4x" - -[package.metadata.cargo-all-features] -skip_optional_dependencies = true - -[package.metadata.docs.rs] -all-features = true - -[features] -compiled_data = [ - "dep:icu_locale_data", - "icu_provider/baked", -] -datagen = [ - "serde", - "dep:databake", - "zerovec/databake", - "icu_locale_core/databake", - "tinystr/databake", - "icu_collections/databake", - "icu_provider/export", -] -default = ["compiled_data"] -serde = [ - "dep:serde", - "icu_locale_core/serde", - "tinystr/serde", - "zerovec/serde", - "icu_provider/serde", - "potential_utf/serde", - "icu_collections/serde", -] - -[lib] -name = "icu_locale" -path = "src/lib.rs" -bench = false - -[[test]] -name = "locale_canonicalizer" -path = "tests/locale_canonicalizer.rs" -required-features = ["serde"] - -[[bench]] -name = "locale_canonicalizer" -path = "benches/locale_canonicalizer.rs" -harness = false - -[dependencies.databake] -version = "0.2.0" -features = ["derive"] -optional = true -default-features = false - -[dependencies.icu_collections] -version = "~2.2.0" -default-features = false - -[dependencies.icu_locale_core] -version = "2.2.0" -features = [ - "alloc", - "zerovec", -] -default-features = false - -[dependencies.icu_locale_data] -version = "~2.2.0" -optional = true -default-features = false - -[dependencies.icu_provider] -version = "2.2.0" -features = ["alloc"] -default-features = false - -[dependencies.potential_utf] -version = "0.1.3" -features = [ - "alloc", - "zerovec", -] -default-features = false - -[dependencies.serde] -version = "1.0.220" -features = [ - "derive", - "alloc", -] -optional = true -default-features = false - -[dependencies.tinystr] -version = "0.8.3" -features = [ - "alloc", - "zerovec", -] -default-features = false - -[dependencies.zerovec] -version = "0.11.6" -features = [ - "alloc", - "yoke", -] -default-features = false - -[dev-dependencies.serde] -version = "1.0.220" -features = ["derive"] -default-features = false - -[dev-dependencies.serde_json] -version = "1.0.45" - -[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion] -version = "0.5.0" - -[lints.clippy] -alloc-instead-of-core = "warn" -branches-sharing-code = "warn" -collection_is_never_read = "warn" -crosspointer_transmute = "warn" -dbg_macro = "warn" -debug_assert_with_mut_call = "warn" -doc_markdown = "warn" -exhaustive_enums = "deny" -exhaustive_structs = "deny" -fn_to_numeric_cast_any = "warn" -infinite_loop = "warn" -large_stack_arrays = "warn" -mismatching_type_param_order = "warn" -missing_fields_in_debug = "warn" -missing_transmute_annotations = "warn" -negative_feature_names = "warn" -or-fun-call = "warn" -same_functions_in_if_condition = "warn" -todo = "warn" -transmute_bytes_to_str = "warn" -transmute_int_to_bool = "warn" -transmute_int_to_non_zero = "warn" -transmute_ptr_to_ptr = "warn" -transmute_ptr_to_ref = "warn" -transmute_undefined_repr = "warn" -transmutes_expressible_as_ptr_casts = "warn" -trivially_copy_pass_by_ref = "deny" -unnecessary-wraps = "warn" -useless_transmute = "warn" -wildcard_dependencies = "warn" - -[lints.rust] -missing_debug_implementations = "deny" -trivial_numeric_casts = "deny" -unused_lifetimes = "warn" -unused_macro_rules = "warn" -unused_qualifications = "warn" - -[lints.rust.unexpected_cfgs] -level = "warn" -priority = 0 -check-cfg = [ - "cfg(icu4c_enable_renaming)", - "cfg(needs_alloc_error_handler)", - "cfg(icu4x_run_size_tests)", - "cfg(icu4x_unstable_fast_trie_only)", -] diff --git a/deps/crates/vendor/icu_locale-v2/Cargo.toml.orig b/deps/crates/vendor/icu_locale-v2/Cargo.toml.orig deleted file mode 100644 index 41e83c924d50..000000000000 --- a/deps/crates/vendor/icu_locale-v2/Cargo.toml.orig +++ /dev/null @@ -1,66 +0,0 @@ -# This file is part of ICU4X. For terms of use, please see the file -# called LICENSE at the top level of the ICU4X source tree -# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -[package] -name = "icu_locale" -description = "API for Unicode Language and Locale Identifiers canonicalization" -categories.workspace = true -keywords = ["unicode", "language-tags", "bcp47"] - -authors.workspace = true -edition.workspace = true -homepage.workspace = true -include.workspace = true -license.workspace = true -repository.workspace = true -rust-version.workspace = true -version.workspace = true - -[package.metadata.cargo-all-features] -skip_optional_dependencies = true - -[package.metadata.docs.rs] -all-features = true - -[dependencies] -databake = { workspace = true, optional = true, features = ["derive"] } -icu_locale_core = { workspace = true, features = ["alloc", "zerovec"] } -icu_provider = { workspace = true, features = ["alloc"] } -serde = { workspace = true, features = ["derive", "alloc"], optional = true } -tinystr = { workspace = true, features = ["alloc", "zerovec"] } -potential_utf = { workspace = true, features = ["alloc", "zerovec"] } -zerovec = { workspace = true, features = ["alloc", "yoke"] } - -icu_collections = { workspace = true } - -icu_locale_data = { workspace = true, optional = true } - -[dev-dependencies] -serde = { workspace = true, features = ["derive"] } -serde_json = { workspace = true } -icu = { path = "../../components/icu", default-features = false } -writeable = { path = "../../utils/writeable" } - -[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] -criterion = { workspace = true } - -[lib] -bench = false # This option is required for Benchmark CI - -[features] -default = ["compiled_data"] -serde = ["dep:serde", "icu_locale_core/serde", "tinystr/serde", "zerovec/serde", "icu_provider/serde", "potential_utf/serde", "icu_collections/serde"] -datagen = ["serde", "dep:databake", "zerovec/databake", "icu_locale_core/databake", "tinystr/databake", "icu_collections/databake", "icu_provider/export"] -compiled_data = ["dep:icu_locale_data", "icu_provider/baked"] - -[[bench]] -name = "locale_canonicalizer" -harness = false - -[[test]] -name = "locale_canonicalizer" -required-features = ["serde"] - -[lints] -workspace = true diff --git a/deps/crates/vendor/icu_locale-v2/OWNERS b/deps/crates/vendor/icu_locale-v2/OWNERS deleted file mode 100644 index 07a258f68f0b..000000000000 --- a/deps/crates/vendor/icu_locale-v2/OWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# This file has been auto-generated by the `gnrt` tool. -file://third_party/rust/icu_locale/OWNERS diff --git a/deps/crates/vendor/icu_locale-v2/README.md b/deps/crates/vendor/icu_locale-v2/README.md deleted file mode 100644 index 418237748bcb..000000000000 --- a/deps/crates/vendor/icu_locale-v2/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# icu_locale [![crates.io](https://img.shields.io/crates/v/icu_locale)](https://crates.io/crates/icu_locale) - - - -Canonicalization of locale identifiers based on [`CLDR`] data. - -This module is published as its own crate ([`icu_locale`](https://docs.rs/icu_locale/latest/icu_locale/)) -and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project. - -It currently supports locale canonicalization based upon the canonicalization -algorithm from [`UTS #35: Unicode LDML 3. LocaleId Canonicalization`], -as well as the minimize and maximize likely subtags algorithms -as described in [`UTS #35: Unicode LDML 3. Likely Subtags`]. - -The maximize method potentially updates a passed in locale in place -depending up the results of running the 'Add Likely Subtags' algorithm -from [`UTS #35: Unicode LDML 3. Likely Subtags`]. - -This minimize method returns a new Locale that is the result of running the -'Remove Likely Subtags' algorithm from [`UTS #35: Unicode LDML 3. Likely Subtags`]. - -## Examples - -```rust -use icu::locale::Locale; -use icu::locale::{LocaleCanonicalizer, TransformResult}; - -let lc = LocaleCanonicalizer::new_extended(); - -let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc" - .parse() - .expect("parse failed"); -assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified); -assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse::().unwrap()); -``` - -```rust -use icu::locale::{locale, LocaleExpander, TransformResult}; - -let lc = LocaleExpander::new_common(); - -let mut locale = locale!("zh-CN"); -assert_eq!(lc.maximize(&mut locale.id), TransformResult::Modified); -assert_eq!(locale, locale!("zh-Hans-CN")); - -let mut locale = locale!("zh-Hant-TW"); -assert_eq!(lc.maximize(&mut locale.id), TransformResult::Unmodified); -assert_eq!(locale, locale!("zh-Hant-TW")); -``` - -```rust -use icu::locale::{locale, LocaleExpander, TransformResult}; -use writeable::assert_writeable_eq; - -let lc = LocaleExpander::new_common(); - -let mut locale = locale!("zh-Hans-CN"); -assert_eq!(lc.minimize(&mut locale.id), TransformResult::Modified); -assert_eq!(locale, locale!("zh")); - -let mut locale = locale!("zh"); -assert_eq!(lc.minimize(&mut locale.id), TransformResult::Unmodified); -assert_eq!(locale, locale!("zh")); -``` - -[`ICU4X`]: ../icu/index.html -[`CLDR`]: https://cldr.unicode.org/ -[`UTS #35: Unicode LDML 3. Likely Subtags`]: https://www.unicode.org/reports/tr35/#Likely_Subtags. -[`UTS #35: Unicode LDML 3. LocaleId Canonicalization`]: https://unicode.org/reports/tr35/#LocaleId_Canonicalization, - - - -## More Information - -For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x). diff --git a/deps/crates/vendor/icu_locale-v2/benches/fixtures/locales.json b/deps/crates/vendor/icu_locale-v2/benches/fixtures/locales.json deleted file mode 100644 index 0e8ba8b798eb..000000000000 --- a/deps/crates/vendor/icu_locale-v2/benches/fixtures/locales.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - "en-US", - "en-GB", - "es-AR", - "it", - "zh-Hans-CN", - "de-AT", - "pl", - "fr-FR", - "de-AT", - "sr-Cyrl-SR", - "nb-NO", - "fr-FR", - "mk", - "uk", - "und-PL", - "und-Latn-AM", - "ug-Cyrl", - "sr-ME", - "mn-Mong", - "lif-Limb", - "gan", - "zh-Hant", - "yue-Hans", - "unr", - "unr-Deva", - "und-Thai-CN", - "ug-Cyrl", - "en-Latn-DE", - "pl-FR", - "de-CH", - "tuq", - "sr-ME", - "ng", - "klx", - "kk-Arab", - "en-Cyrl", - "und-Cyrl-UK", - "und-Arab", - "und-Arab-FO" -] diff --git a/deps/crates/vendor/icu_locale-v2/benches/fixtures/uncanonicalized-locales.json b/deps/crates/vendor/icu_locale-v2/benches/fixtures/uncanonicalized-locales.json deleted file mode 100644 index 18eadbce68e2..000000000000 --- a/deps/crates/vendor/icu_locale-v2/benches/fixtures/uncanonicalized-locales.json +++ /dev/null @@ -1,88 +0,0 @@ -[ - "cka", - "cze", - "gfx", - "sgn-BR", - "sgn-DD", - "tam", - "und-aaland", - "nob-bokmal", - "no-nynorsk", - "und-Qaai", - "en-554", - "en-084", - "art-lojban", - "zh-guoyu", - "zh-hakka", - "zh-xiang", - "aar-x-private", - "heb-x-private", - "ces", - "hy-arevela", - "hy-arevmda", - "cel-gaulish", - "ja-latn-hepburn-heploc", - "ja-Latn-fonipa-hepburn-heploc", - "und-Armn-SU", - "sh", - "sh-Cyrl", - "cnr", - "cnr-BA", - "ru-SU", - "ru-810", - "en-SU", - "en-810", - "und-SU", - "und-810", - "und-Latn-SU", - "und-Latn-810", - "hy-SU", - "hy-810", - "und-Armn-SU", - "und-Armn-810", - "sr-CS", - "sr-Latn-CS", - "sr-Cyrl-CS", - "az-NT", - "sl-t-sl-rozaj-biske-1994", - "DE-T-M0-DIN-K0-QWERTZ", - "en-t-m0-true", - "en-t-iw", - "und-u-rg-no23", - "und-u-rg-cn11", - "und-u-rg-cz10a", - "und-u-rg-fra", - "und-u-rg-frg", - "und-u-rg-lud", - "und-NO-u-rg-no23", - "und-CN-u-rg-cn11", - "und-CZ-u-rg-cz10a", - "und-FR-u-rg-fra", - "und-FR-u-rg-frg", - "und-u-rg-lud", - "und-u-sd-no23", - "und-u-sd-cn11", - "und-u-sd-cz10a", - "und-u-sd-fra", - "hy-arevela", - "hy-Armn-arevela", - "hy-AM-arevela", - "hy-arevela-fonipa", - "hy-fonipa-arevela", - "hy-arevmda", - "hy-Armn-arevmda", - "hy-AM-arevmda", - "hy-arevmda-fonipa", - "hy-fonipa-arevmda", - "ja-Latn-hepburn-heploc", - "ja-Latn-JP-hepburn-heploc", - "sv-aaland", - "el-polytoni", - "ja-Latn-alalc97-hepburn-heploc", - "ja-Latn-hepburn-alalc97-heploc", - "ja-Latn-hepburn-heploc-alalc97", - "ja-Latn-heploc-hepburn", - "ja-Latn-heploc", - "ja-Latn-aaland-heploc", - "ja-Latn-heploc-polytoni" -] diff --git a/deps/crates/vendor/icu_locale-v2/benches/locale_canonicalizer.rs b/deps/crates/vendor/icu_locale-v2/benches/locale_canonicalizer.rs deleted file mode 100644 index 11d8668196ac..000000000000 --- a/deps/crates/vendor/icu_locale-v2/benches/locale_canonicalizer.rs +++ /dev/null @@ -1,107 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use icu_locale::LocaleCanonicalizer; -use icu_locale::LocaleExpander; -use icu_locale_core::Locale; - -fn canonicalize_bench(c: &mut Criterion) { - let lc = LocaleCanonicalizer::new_common(); - - let mut group = c.benchmark_group("uncanonicalized"); - - let data: Vec = - serde_json::from_str(include_str!("fixtures/uncanonicalized-locales.json")) - .expect("Failed to read a fixture"); - let locales: Vec = data.iter().map(|s| s.parse().unwrap()).collect(); - - group.bench_function("clone", |b| { - b.iter(|| { - for locale in &locales { - let _ = black_box(locale).clone(); - } - }) - }); - - group.bench_function("canonicalize", |b| { - b.iter(|| { - for locale in &locales { - let mut locale = black_box(locale).clone(); - lc.canonicalize(&mut locale); - } - }) - }); - - group.finish(); -} - -fn canonicalize_noop_bench(c: &mut Criterion) { - let lc = LocaleCanonicalizer::new_common(); - - let mut group = c.benchmark_group("canonicalized"); - - // None of these locales require canonicalization, so this measures the cost of calling - // the canonicalizer on locales that will not be modified. - let data: Vec = serde_json::from_str(include_str!("fixtures/locales.json")) - .expect("Failed to read a fixture"); - let locales: Vec = data.iter().map(|s| s.parse().unwrap()).collect(); - - group.bench_function("clone", |b| { - b.iter(|| { - for locale in &locales { - let _ = black_box(locale).clone(); - } - }) - }); - - group.bench_function("canonicalize", |b| { - b.iter(|| { - for locale in &locales { - let mut locale = black_box(locale).clone(); - lc.canonicalize(&mut locale); - } - }) - }); - - group.finish(); -} - -fn maximize_bench(c: &mut Criterion) { - let lc = LocaleExpander::new_common(); - - let mut group = c.benchmark_group("likelysubtags"); - - let data: Vec = serde_json::from_str(include_str!("fixtures/locales.json")) - .expect("Failed to read a fixture"); - let locales: Vec = data.iter().map(|s| s.parse().unwrap()).collect(); - - group.bench_function("maximize", |b| { - b.iter(|| { - for locale in &locales { - let mut locale = locale.clone(); - lc.maximize(black_box(&mut locale.id)); - } - }) - }); - - group.bench_function("minimize", |b| { - b.iter(|| { - for locale in &locales { - let mut locale = locale.clone(); - lc.minimize(black_box(&mut locale.id)); - } - }) - }); - - group.finish(); -} - -criterion_group!( - benches, - canonicalize_bench, - canonicalize_noop_bench, - maximize_bench -); -criterion_main!(benches); diff --git a/deps/crates/vendor/icu_locale-v2/src/canonicalizer.rs b/deps/crates/vendor/icu_locale-v2/src/canonicalizer.rs deleted file mode 100644 index 880a7fdc9b76..000000000000 --- a/deps/crates/vendor/icu_locale-v2/src/canonicalizer.rs +++ /dev/null @@ -1,622 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! The collection of code for locale canonicalization. - -use crate::provider::*; -use alloc::vec::Vec; -use core::cmp::Ordering; - -use crate::LocaleExpander; -use crate::TransformResult; -use icu_locale_core::extensions::Extensions; -use icu_locale_core::subtags::{Language, Region, Script}; -use icu_locale_core::{ - extensions::unicode::key, - subtags::{language, Variant, Variants}, - LanguageIdentifier, Locale, -}; -use icu_provider::prelude::*; -use tinystr::TinyAsciiStr; - -/// Implements the algorithm defined in *[UTS #35: Annex C, LocaleId Canonicalization]*. -/// -/// # Examples -/// -/// ``` -/// use icu::locale::Locale; -/// use icu::locale::{LocaleCanonicalizer, TransformResult}; -/// -/// let lc = LocaleCanonicalizer::new_extended(); -/// -/// let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc".parse().unwrap(); -/// assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified); -/// assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse().unwrap()); -/// ``` -/// -/// [UTS #35: Annex C, LocaleId Canonicalization]: https://unicode.org/reports/tr35/#LocaleId_Canonicalization -#[derive(Debug)] -pub struct LocaleCanonicalizer { - /// Data to support canonicalization. - aliases: DataPayload, - /// Likely subtags implementation for delegation. - expander: Expander, -} - -fn uts35_rule_matches<'a, I>( - source: &LanguageIdentifier, - language: Language, - script: Option, - replacement: &LanguageIdentifier, -) where - I: Iterator, -{ - if ruletype_has_language || (source.language.is_unknown() && !replacement.language.is_unknown()) - { - source.language = replacement.language; - } - if ruletype_has_script || (source.script.is_none() && replacement.script.is_some()) { - source.script = replacement.script; - } - if ruletype_has_region || (source.region.is_none() && replacement.region.is_some()) { - source.region = replacement.region; - } - if let Some(skips) = ruletype_variants { - // The rule matches if the ruletype variants are a subset of the source variants. - // This means ja-Latn-fonipa-hepburn-heploc matches against the rule for - // hepburn-heploc and is canonicalized to ja-Latn-alalc97-fonipa - - // We're merging three sorted deduped iterators into a new sequence: - // sources - skips + replacements - - let mut sources = source.variants.iter().peekable(); - let mut replacements = replacement.variants.iter().peekable(); - let mut skips = skips.peekable(); - - let mut variants: Vec = Vec::new(); - - loop { - match (sources.peek(), skips.peek(), replacements.peek()) { - (Some(&source), Some(skip), _) - if source.as_str().cmp(skip) == Ordering::Greater => - { - skips.next(); - } - (Some(&source), Some(skip), _) if source.as_str().cmp(skip) == Ordering::Equal => { - skips.next(); - sources.next(); - } - (Some(&source), _, Some(&replacement)) - if replacement.cmp(source) == Ordering::Less => - { - variants.push(*replacement); - replacements.next(); - } - (Some(&source), _, Some(&replacement)) - if replacement.cmp(source) == Ordering::Equal => - { - variants.push(*source); - sources.next(); - replacements.next(); - } - (Some(&source), _, _) => { - variants.push(*source); - sources.next(); - } - (None, _, Some(&replacement)) => { - variants.push(*replacement); - replacements.next(); - } - (None, _, None) => { - break; - } - } - } - source.variants = Variants::from_vec_unchecked(variants); - } -} - -#[inline] -fn uts35_check_language_rules( - langid: &mut LanguageIdentifier, - alias_data: &DataPayload, -) -> TransformResult { - if !langid.language.is_unknown() { - let lang: TinyAsciiStr<3> = langid.language.into(); - let replacement = if lang.len() == 2 { - alias_data - .get() - .language_len2 - .get(&lang.resize().to_unvalidated()) - } else { - alias_data.get().language_len3.get(&lang.to_unvalidated()) - }; - - if let Some(replacement) = replacement { - if let Ok(new_langid) = replacement.parse() { - uts35_replacement::>( - langid, - true, - false, - false, - None, - &new_langid, - ); - return TransformResult::Modified; - } - } - } - - TransformResult::Unmodified -} - -impl LocaleCanonicalizer { - /// A constructor which creates a [`LocaleCanonicalizer`] from compiled data, - /// using a [`LocaleExpander`] for common locales. - /// - /// ✨ *Enabled with the `compiled_data` Cargo feature.* - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - #[cfg(feature = "compiled_data")] - pub const fn new_common() -> Self { - Self::new_with_expander(LocaleExpander::new_common()) - } - - icu_provider::gen_buffer_data_constructors!(() -> error: DataError, - functions: [ - new_common: skip, - try_new_common_with_buffer_provider, - try_new_common_unstable, - Self, - ] - ); - - #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_common)] - pub fn try_new_common_unstable

(provider: &P) -> Result - where - P: DataProvider - + DataProvider - + DataProvider - + ?Sized, - { - let expander = LocaleExpander::try_new_common_unstable(provider)?; - Self::try_new_with_expander_unstable(provider, expander) - } - - /// A constructor which creates a [`LocaleCanonicalizer`] from compiled data, - /// using a [`LocaleExpander`] for all locales. - /// - /// ✨ *Enabled with the `compiled_data` Cargo feature.* - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - #[cfg(feature = "compiled_data")] - pub const fn new_extended() -> Self { - Self::new_with_expander(LocaleExpander::new_extended()) - } - - icu_provider::gen_buffer_data_constructors!(() -> error: DataError, - functions: [ - new_extended: skip, - try_new_extended_with_buffer_provider, - try_new_extended_unstable, - Self, - ] - ); - - #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_extended)] - pub fn try_new_extended_unstable

(provider: &P) -> Result - where - P: DataProvider - + DataProvider - + DataProvider - + DataProvider - + ?Sized, - { - let expander = LocaleExpander::try_new_extended_unstable(provider)?; - Self::try_new_with_expander_unstable(provider, expander) - } -} - -impl> LocaleCanonicalizer { - /// Creates a [`LocaleCanonicalizer`] with a custom [`LocaleExpander`] and compiled data. - /// - /// ✨ *Enabled with the `compiled_data` Cargo feature.* - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - #[cfg(feature = "compiled_data")] - pub const fn new_with_expander(expander: Expander) -> Self { - Self { - aliases: DataPayload::from_static_ref(Baked::SINGLETON_LOCALE_ALIASES_V1), - expander, - } - } - - #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_with_expander)] - pub fn try_new_with_expander_unstable

( - provider: &P, - expander: Expander, - ) -> Result - where - P: DataProvider + ?Sized, - { - let aliases: DataPayload = provider.load(Default::default())?.payload; - - Ok(Self { aliases, expander }) - } - - icu_provider::gen_buffer_data_constructors!((options: Expander) -> error: DataError, - functions: [ - new_with_expander: skip, - try_new_with_expander_with_buffer_provider, - try_new_with_expander_unstable, - Self, - ] - ); - - /// The canonicalize method potentially updates a passed in locale in place - /// depending up the results of running the canonicalization algorithm - /// from . - /// - /// Some BCP47 canonicalization data is not part of the CLDR json package. Because - /// of this, some canonicalizations are not performed, e.g. the canonicalization of - /// `und-u-ca-islamicc` to `und-u-ca-islamic-civil`. This will be fixed in a future - /// release once the missing data has been added to the CLDR json data. See: - /// - /// - /// # Examples - /// - /// ``` - /// use icu::locale::{Locale, LocaleCanonicalizer, TransformResult}; - /// - /// let lc = LocaleCanonicalizer::new_extended(); - /// - /// let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc".parse().unwrap(); - /// assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified); - /// assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse().unwrap()); - /// ``` - pub fn canonicalize(&self, locale: &mut Locale) -> TransformResult { - let mut result = TransformResult::Unmodified; - - // This loops until we get a 'fixed point', where applying the rules do not - // result in any more changes. - loop { - // These are linear searches due to the ordering imposed by the canonicalization - // rules, where rules with more variants should be considered first. With the - // current data in CLDR, we will only do this for locales which have variants, - // or new rules which we haven't special-cased yet (of which there are fewer - // than 20). - let modified = if locale.id.variants.is_empty() { - self.canonicalize_absolute_language_fallbacks(&mut locale.id) - } else { - self.canonicalize_language_variant_fallbacks(&mut locale.id) - }; - if modified { - result = TransformResult::Modified; - continue; - } - - if !locale.id.language.is_unknown() { - // If the region is specified, check sgn-region rules first - if let Some(region) = locale.id.region { - if locale.id.language == language!("sgn") { - if let Some(&sgn_lang) = self - .aliases - .get() - .sgn_region - .get(®ion.to_tinystr().to_unvalidated()) - { - uts35_replacement::>( - &mut locale.id, - true, - false, - true, - None, - &sgn_lang.into(), - ); - result = TransformResult::Modified; - continue; - } - } - } - - if uts35_check_language_rules(&mut locale.id, &self.aliases) - == TransformResult::Modified - { - result = TransformResult::Modified; - continue; - } - } - - if let Some(script) = locale.id.script { - if let Some(&replacement) = self - .aliases - .get() - .script - .get(&script.to_tinystr().to_unvalidated()) - { - locale.id.script = Some(replacement); - result = TransformResult::Modified; - continue; - } - } - - if let Some(region) = locale.id.region { - let replacement = if region.is_alphabetic() { - self.aliases - .get() - .region_alpha - .get(®ion.to_tinystr().resize().to_unvalidated()) - } else { - self.aliases - .get() - .region_num - .get(®ion.to_tinystr().to_unvalidated()) - }; - if let Some(&replacement) = replacement { - locale.id.region = Some(replacement); - result = TransformResult::Modified; - continue; - } - - if let Some(regions) = self - .aliases - .get() - .complex_region - .get(®ion.to_tinystr().to_unvalidated()) - { - // Skip if regions are empty - if let Some(default_region) = regions.get(0) { - let mut maximized = LanguageIdentifier { - language: locale.id.language, - script: locale.id.script, - region: None, - variants: Variants::default(), - }; - - locale.id.region = Some( - match ( - self.expander.as_ref().maximize(&mut maximized), - maximized.region, - ) { - (TransformResult::Modified, Some(candidate)) - if regions.iter().any(|x| x == candidate) => - { - candidate - } - _ => default_region, - }, - ); - result = TransformResult::Modified; - continue; - } - } - } - - if !locale.id.variants.is_empty() { - let mut modified = Vec::with_capacity(0); - for (idx, &variant) in locale.id.variants.iter().enumerate() { - if let Some(&updated) = self - .aliases - .get() - .variant - .get(&variant.to_tinystr().to_unvalidated()) - { - if modified.is_empty() { - modified = locale.id.variants.to_vec(); - } - #[expect(clippy::indexing_slicing)] - let _ = core::mem::replace(&mut modified[idx], updated); - } - } - - if !modified.is_empty() { - modified.sort(); - modified.dedup(); - locale.id.variants = Variants::from_vec_unchecked(modified); - result = TransformResult::Modified; - continue; - } - } - - // Nothing matched in this iteration, we're done. - break; - } - - if !locale.extensions.transform.is_empty() || !locale.extensions.unicode.is_empty() { - self.canonicalize_extensions(&mut locale.extensions, &mut result); - } - result - } - - fn canonicalize_extensions(&self, extensions: &mut Extensions, result: &mut TransformResult) { - // Handle Locale extensions in their own loops, because these rules do not interact - // with each other. - if let Some(ref mut lang) = extensions.transform.lang { - while uts35_check_language_rules(lang, &self.aliases) == TransformResult::Modified { - *result = TransformResult::Modified; - } - } - - if !extensions.unicode.keywords.is_empty() { - for key in [key!("rg"), key!("sd")] { - if let Some(value) = extensions.unicode.keywords.get_mut(&key) { - if let Some(only_value) = value.as_single_subtag() { - if let Some(modified_value) = self - .aliases - .get() - .subdivision - .get(&only_value.to_tinystr().resize().to_unvalidated()) - { - if let Ok(modified_value) = modified_value.parse() { - *value = modified_value; - *result = TransformResult::Modified; - } - } - } - } - } - } - } - - fn canonicalize_language_variant_fallbacks(&self, lid: &mut LanguageIdentifier) -> bool { - // These language/variant comibnations have around 20 rules - for LanguageStrStrPair(lang, raw_variants, raw_to) in self - .aliases - .get() - .language_variants - .iter() - .map(zerofrom::ZeroFrom::zero_from) - { - let raw_variants = raw_variants.split('-'); - // if is_iter_sorted(raw_variants.clone()) { // can we sort at construction? - if uts35_rule_matches(lid, lang, None, None, raw_variants.clone()) { - if let Ok(to) = raw_to.parse() { - uts35_replacement( - lid, - !lang.is_unknown(), - false, - false, - Some(raw_variants), - &to, - ); - return true; - } - } - } - false - } - - fn canonicalize_absolute_language_fallbacks(&self, lid: &mut LanguageIdentifier) -> bool { - for StrStrPair(raw_from, raw_to) in self - .aliases - .get() - .language - .iter() - .map(zerofrom::ZeroFrom::zero_from) - { - if let Ok(from) = raw_from.parse::() { - if uts35_rule_matches( - lid, - from.language, - from.script, - from.region, - from.variants.iter().map(Variant::as_str), - ) { - if let Ok(to) = raw_to.parse() { - uts35_replacement( - lid, - !from.language.is_unknown(), - from.script.is_some(), - from.region.is_some(), - Some(from.variants.iter().map(Variant::as_str)), - &to, - ); - return true; - } - } - } - } - false - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn test_uts35_rule_matches() { - for (source, rule, result) in [ - ("ja", "und", true), - ("und-heploc-hepburn", "und-hepburn", true), - ("ja-heploc-hepburn", "und-hepburn", true), - ("ja-hepburn", "und-hepburn-heploc", false), - ] { - let source = source.parse().unwrap(); - let rule = rule.parse::().unwrap(); - assert_eq!( - uts35_rule_matches( - &source, - rule.language, - rule.script, - rule.region, - rule.variants.iter().map(Variant::as_str), - ), - result, - "{source}" - ); - } - } - - #[test] - fn test_uts35_replacement() { - for (locale, rule_0, rule_1, result) in [ - ( - "ja-Latn-fonipa-hepburn-heploc", - "und-hepburn-heploc", - "und-alalc97", - "ja-Latn-alalc97-fonipa", - ), - ("sgn-DD", "und-DD", "und-DE", "sgn-DE"), - ("sgn-DE", "sgn-DE", "gsg", "gsg"), - ] { - let mut locale: Locale = locale.parse().unwrap(); - let rule_0 = rule_0.parse::().unwrap(); - let rule_1 = rule_1.parse().unwrap(); - let result = result.parse::().unwrap(); - uts35_replacement( - &mut locale.id, - !rule_0.language.is_unknown(), - rule_0.script.is_some(), - rule_0.region.is_some(), - Some(rule_0.variants.iter().map(Variant::as_str)), - &rule_1, - ); - assert_eq!(result, locale); - } - } -} diff --git a/deps/crates/vendor/icu_locale-v2/src/directionality.rs b/deps/crates/vendor/icu_locale-v2/src/directionality.rs deleted file mode 100644 index 6a2464645d3e..000000000000 --- a/deps/crates/vendor/icu_locale-v2/src/directionality.rs +++ /dev/null @@ -1,255 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use crate::provider::*; -use crate::LocaleExpander; -use icu_locale_core::subtags::Script; -use icu_locale_core::LanguageIdentifier; -use icu_provider::prelude::*; - -/// Represents the direction of a script. -/// -/// [`LocaleDirectionality`] can be used to get this information. -#[derive(Debug, PartialEq, Eq, Clone, Copy)] -#[non_exhaustive] -pub enum Direction { - /// The script is left-to-right. - LeftToRight, - /// The script is right-to-left. - RightToLeft, -} - -/// Provides methods to determine the direction of a locale. -/// -/// The `Expander` generic parameter wraps a [`LocaleExpander`]. -/// -/// # Examples -/// -/// ``` -/// use icu::locale::{langid, Direction, LocaleDirectionality}; -/// -/// let ld = LocaleDirectionality::new_common(); -/// -/// assert_eq!(ld.get(&langid!("en")), Some(Direction::LeftToRight)); -/// ``` -#[derive(Debug)] -pub struct LocaleDirectionality { - script_direction: DataPayload, - expander: Expander, -} - -impl LocaleDirectionality { - /// Creates a [`LocaleDirectionality`] from compiled data, using [`LocaleExpander`] - /// data for common locales. - /// - /// This includes limited likely subtags data, see [`LocaleExpander::new_common()`]. - #[cfg(feature = "compiled_data")] - pub const fn new_common() -> Self { - Self::new_with_expander(LocaleExpander::new_common()) - } - - // Note: This is a custom impl because the bounds on `try_new_unstable` don't suffice - #[doc = icu_provider::gen_buffer_unstable_docs!(BUFFER, Self::new_common)] - #[cfg(feature = "serde")] - pub fn try_new_common_with_buffer_provider( - provider: &(impl BufferProvider + ?Sized), - ) -> Result { - let expander = LocaleExpander::try_new_common_with_buffer_provider(provider)?; - Self::try_new_with_expander_unstable(&provider.as_deserializing(), expander) - } - #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_common)] - pub fn try_new_common_unstable

(provider: &P) -> Result - where - P: DataProvider - + DataProvider - + DataProvider - + ?Sized, - { - let expander = LocaleExpander::try_new_common_unstable(provider)?; - Self::try_new_with_expander_unstable(provider, expander) - } - - /// Creates a [`LocaleDirectionality`] from compiled data, using [`LocaleExpander`] - /// data for all locales. - /// - /// This includes all likely subtags data, see [`LocaleExpander::new_extended()`]. - #[cfg(feature = "compiled_data")] - pub const fn new_extended() -> Self { - Self::new_with_expander(LocaleExpander::new_extended()) - } - - // Note: This is a custom impl because the bounds on `try_new_unstable` don't suffice - #[doc = icu_provider::gen_buffer_unstable_docs!(BUFFER, Self::new_extended)] - #[cfg(feature = "serde")] - pub fn try_new_extended_with_buffer_provider( - provider: &(impl BufferProvider + ?Sized), - ) -> Result { - let expander = LocaleExpander::try_new_extended_with_buffer_provider(provider)?; - Self::try_new_with_expander_unstable(&provider.as_deserializing(), expander) - } - #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_extended)] - pub fn try_new_extended_unstable

(provider: &P) -> Result - where - P: DataProvider - + DataProvider - + DataProvider - + DataProvider - + ?Sized, - { - let expander = LocaleExpander::try_new_extended_unstable(provider)?; - Self::try_new_with_expander_unstable(provider, expander) - } -} - -impl> LocaleDirectionality { - /// Creates a [`LocaleDirectionality`] with a custom [`LocaleExpander`] and compiled data. - /// - /// This allows using [`LocaleExpander::new_extended()`] with data for all locales. - /// - /// # Examples - /// - /// ``` - /// use icu::locale::{ - /// langid, Direction, LocaleDirectionality, LocaleExpander, - /// }; - /// - /// let ld_default = LocaleDirectionality::new_common(); - /// - /// assert_eq!(ld_default.get(&langid!("jbn")), None); - /// - /// let expander = LocaleExpander::new_extended(); - /// let ld_extended = LocaleDirectionality::new_with_expander(expander); - /// - /// assert_eq!( - /// ld_extended.get(&langid!("jbn")), - /// Some(Direction::RightToLeft) - /// ); - /// ``` - #[cfg(feature = "compiled_data")] - pub const fn new_with_expander(expander: Expander) -> Self { - LocaleDirectionality { - script_direction: DataPayload::from_static_ref( - Baked::SINGLETON_LOCALE_SCRIPT_DIRECTION_V1, - ), - expander, - } - } - - #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_with_expander)] - pub fn try_new_with_expander_unstable

( - provider: &P, - expander: Expander, - ) -> Result - where - P: DataProvider + ?Sized, - { - let script_direction = provider.load(Default::default())?.payload; - - Ok(LocaleDirectionality { - script_direction, - expander, - }) - } - - /// Returns the script direction of the given locale. - /// - /// Note that the direction is a property of the script of a locale, not of the language. As such, - /// when given a locale without an associated script tag (i.e., `locale!("en")` vs. `locale!("en-Latn")`), - /// this method first tries to infer the script using the language and region before returning its direction. - /// - /// If you already have a script struct and want to get its direction, you should use - /// `Locale::from(Some(my_script))` and call this method. - /// - /// This method will return `None` if either a locale's script cannot be determined, or there is no information - /// for the script. - /// - /// # Examples - /// - /// Using an existing locale: - /// - /// ``` - /// use icu::locale::{langid, Direction, LocaleDirectionality}; - /// - /// let ld = LocaleDirectionality::new_common(); - /// - /// assert_eq!(ld.get(&langid!("en-US")), Some(Direction::LeftToRight)); - /// - /// assert_eq!(ld.get(&langid!("ar")), Some(Direction::RightToLeft)); - /// - /// assert_eq!(ld.get(&langid!("en-Arab")), Some(Direction::RightToLeft)); - /// - /// assert_eq!(ld.get(&langid!("foo")), None); - /// ``` - /// - /// Using a script directly: - /// - /// ``` - /// use icu::locale::subtags::script; - /// use icu::locale::{Direction, LanguageIdentifier, LocaleDirectionality}; - /// - /// let ld = LocaleDirectionality::new_common(); - /// - /// assert_eq!( - /// ld.get(&LanguageIdentifier::from(Some(script!("Latn")))), - /// Some(Direction::LeftToRight) - /// ); - /// ``` - pub fn get(&self, langid: &LanguageIdentifier) -> Option { - let script = self.expander.as_ref().get_likely_script(langid)?; - - if self.script_in_ltr(script) { - Some(Direction::LeftToRight) - } else if self.script_in_rtl(script) { - Some(Direction::RightToLeft) - } else { - None - } - } - - /// Returns whether the given locale is right-to-left. - /// - /// Note that if this method returns `false`, the locale is either left-to-right or - /// the [`LocaleDirectionality`] does not include data for the locale. - /// You should use [`LocaleDirectionality::get`] if you need to differentiate between these cases. - /// - /// See [`LocaleDirectionality::get`] for more information. - pub fn is_right_to_left(&self, langid: &LanguageIdentifier) -> bool { - self.expander - .as_ref() - .get_likely_script(langid) - .map(|s| self.script_in_rtl(s)) - .unwrap_or(false) - } - - /// Returns whether the given locale is left-to-right. - /// - /// Note that if this method returns `false`, the locale is either right-to-left or - /// the [`LocaleDirectionality`] does not include data for the locale. - /// You should use [`LocaleDirectionality::get`] if you need to differentiate between these cases. - /// - /// See [`LocaleDirectionality::get`] for more information. - pub fn is_left_to_right(&self, langid: &LanguageIdentifier) -> bool { - self.expander - .as_ref() - .get_likely_script(langid) - .map(|s| self.script_in_ltr(s)) - .unwrap_or(false) - } - - fn script_in_rtl(&self, script: Script) -> bool { - self.script_direction - .get() - .rtl - .binary_search(&script.to_tinystr().to_unvalidated()) - .is_ok() - } - - fn script_in_ltr(&self, script: Script) -> bool { - self.script_direction - .get() - .ltr - .binary_search(&script.to_tinystr().to_unvalidated()) - .is_ok() - } -} diff --git a/deps/crates/vendor/icu_locale-v2/src/exemplar_chars.rs b/deps/crates/vendor/icu_locale-v2/src/exemplar_chars.rs deleted file mode 100644 index 98385e1a95bd..000000000000 --- a/deps/crates/vendor/icu_locale-v2/src/exemplar_chars.rs +++ /dev/null @@ -1,305 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! This module provides APIs for getting exemplar characters for a locale. -//! -//! Exemplars are characters used by a language, separated into different sets. -//! The sets are: main, auxiliary, punctuation, numbers, and index. -//! -//! The sets define, according to typical usage in the language, -//! which characters occur in which contexts with which frequency. -//! For more information, see the documentation in the -//! [Exemplars section in Unicode Technical Standard #35](https://unicode.org/reports/tr35/tr35-general.html#Exemplars) -//! of the LDML specification. -//! -//! # Examples -//! -//! ``` -//! use icu::locale::exemplar_chars::ExemplarCharacters; -//! use icu::locale::locale; -//! -//! let locale = locale!("en-001").into(); -//! let exemplars_main = ExemplarCharacters::try_new_main(&locale) -//! .expect("locale should be present"); -//! -//! assert!(exemplars_main.contains('a')); -//! assert!(exemplars_main.contains('z')); -//! assert!(exemplars_main.contains_str("a")); -//! assert!(!exemplars_main.contains_str("ä")); -//! assert!(!exemplars_main.contains_str("ng")); -//! ``` - -use crate::provider::*; -use core::ops::Deref; -use icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList; -use icu_provider::{marker::ErasedMarker, prelude::*}; - -/// A wrapper around `UnicodeSet` data (characters and strings) -#[derive(Debug)] -pub struct ExemplarCharacters { - data: DataPayload>>, -} - -impl ExemplarCharacters { - /// Construct a borrowed version of this type that can be queried. - /// - /// This avoids a potential small underlying cost per API call (ex: `contains()`) by consolidating it - /// up front. - #[inline] - pub fn as_borrowed(&self) -> ExemplarCharactersBorrowed<'_> { - ExemplarCharactersBorrowed { - data: self.data.get(), - } - } -} - -/// A borrowed wrapper around code point set data, returned by -/// [`ExemplarCharacters::as_borrowed()`]. More efficient to query. -#[derive(Clone, Copy, Debug)] -pub struct ExemplarCharactersBorrowed<'a> { - data: &'a ExemplarCharactersData<'a>, -} - -impl<'a> Deref for ExemplarCharactersBorrowed<'a> { - type Target = CodePointInversionListAndStringList<'a>; - - fn deref(&self) -> &Self::Target { - &self.data.0 - } -} - -impl ExemplarCharactersBorrowed<'static> { - /// Cheaply converts a [`ExemplarCharactersBorrowed<'static>`] into a [`ExemplarCharacters`]. - /// - /// Note: Due to branching and indirection, using [`ExemplarCharacters`] might inhibit some - /// compile-time optimizations that are possible with [`ExemplarCharactersBorrowed`]. - pub const fn static_to_owned(self) -> ExemplarCharacters { - ExemplarCharacters { - data: DataPayload::from_static_ref(self.data), - } - } -} - -macro_rules! make_exemplar_chars_unicode_set_property { - ( - // currently unused - dyn_data_marker: $d:ident; - data_marker: $data_marker:ty; - func: - pub fn $unstable:ident(); - $(#[$attr:meta])* - pub fn $compiled:ident(); - ) => { - impl ExemplarCharactersBorrowed<'static> { - $(#[$attr])* - #[cfg(feature = "compiled_data")] - #[inline] - pub fn $compiled( - locale: &DataLocale, - ) -> Result { - Ok(ExemplarCharactersBorrowed { - data: DataProvider::<$data_marker>::load( - &crate::provider::Baked, - DataRequest { - id: DataIdentifierBorrowed::for_locale(locale), - ..Default::default() - })? - .payload - .get_static() - .ok_or_else(|| DataError::custom("Baked provider didn't return static payload"))? - }) - } - - } - impl ExemplarCharacters { - $(#[$attr])* - #[cfg(feature = "compiled_data")] - pub fn $compiled( - locale: &DataLocale, - ) -> Result, DataError> { - ExemplarCharactersBorrowed::$compiled(locale) - } - - #[doc = concat!("A version of [`Self::", stringify!($compiled), "()`] that uses custom data provided by a [`DataProvider`].")] - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - pub fn $unstable( - provider: &(impl DataProvider<$data_marker> + ?Sized), - locale: &DataLocale, - ) -> Result { - Ok(Self { - data: - provider.load( - DataRequest { - id: DataIdentifierBorrowed::for_locale(locale), - ..Default::default() - })? - .payload - .cast() - }) - } - } - } -} - -make_exemplar_chars_unicode_set_property!( - dyn_data_marker: ExemplarCharactersMain; - data_marker: LocaleExemplarCharactersMainV1; - func: - pub fn try_new_main_unstable(); - - /// Get the "main" set of exemplar characters. - /// - /// ✨ *Enabled with the `compiled_data` Cargo feature.* - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - /// - /// # Examples - /// - /// ``` - /// use icu::locale::locale; - /// use icu::locale::exemplar_chars::ExemplarCharacters; - /// - /// let exemplars_main = ExemplarCharacters::try_new_main(&locale!("en").into()) - /// .expect("locale should be present"); - /// - /// assert!(exemplars_main.contains('a')); - /// assert!(exemplars_main.contains('z')); - /// assert!(exemplars_main.contains_str("a")); - /// assert!(!exemplars_main.contains_str("ä")); - /// assert!(!exemplars_main.contains_str("ng")); - /// assert!(!exemplars_main.contains_str("A")); - /// ``` - pub fn try_new_main(); -); - -make_exemplar_chars_unicode_set_property!( - dyn_data_marker: ExemplarCharactersAuxiliary; - data_marker: LocaleExemplarCharactersAuxiliaryV1; - func: - pub fn try_new_auxiliary_unstable(); - - /// Get the "auxiliary" set of exemplar characters. - /// - /// ✨ *Enabled with the `compiled_data` Cargo feature.* - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - /// - /// # Examples - /// - /// ``` - /// use icu::locale::locale; - /// use icu::locale::exemplar_chars::ExemplarCharacters; - /// - /// let exemplars_auxiliary = - /// ExemplarCharacters::try_new_auxiliary(&locale!("en").into()) - /// .expect("locale should be present"); - /// - /// assert!(!exemplars_auxiliary.contains('a')); - /// assert!(!exemplars_auxiliary.contains('z')); - /// assert!(!exemplars_auxiliary.contains_str("a")); - /// assert!(exemplars_auxiliary.contains_str("ä")); - /// assert!(!exemplars_auxiliary.contains_str("ng")); - /// assert!(!exemplars_auxiliary.contains_str("A")); - /// ``` - pub fn try_new_auxiliary(); -); - -make_exemplar_chars_unicode_set_property!( - dyn_data_marker: ExemplarCharactersPunctuation; - data_marker: LocaleExemplarCharactersPunctuationV1; - func: - pub fn try_new_punctuation_unstable(); - - /// Get the "punctuation" set of exemplar characters. - /// - /// ✨ *Enabled with the `compiled_data` Cargo feature.* - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - /// - /// # Examples - /// - /// ``` - /// use icu::locale::locale; - /// use icu::locale::exemplar_chars::ExemplarCharacters; - /// - /// let exemplars_punctuation = - /// ExemplarCharacters::try_new_punctuation(&locale!("en").into()) - /// .expect("locale should be present"); - /// - /// assert!(!exemplars_punctuation.contains('0')); - /// assert!(!exemplars_punctuation.contains('9')); - /// assert!(!exemplars_punctuation.contains('%')); - /// assert!(exemplars_punctuation.contains(',')); - /// assert!(exemplars_punctuation.contains('.')); - /// assert!(exemplars_punctuation.contains('!')); - /// assert!(exemplars_punctuation.contains('?')); - /// ``` - pub fn try_new_punctuation(); -); - -make_exemplar_chars_unicode_set_property!( - dyn_data_marker: ExemplarCharactersNumbers; - data_marker: LocaleExemplarCharactersNumbersV1; - func: - pub fn try_new_numbers_unstable(); - - /// Get the "numbers" set of exemplar characters. - /// - /// ✨ *Enabled with the `compiled_data` Cargo feature.* - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - /// - /// # Examples - /// - /// ``` - /// use icu::locale::locale; - /// use icu::locale::exemplar_chars::ExemplarCharacters; - /// - /// let exemplars_numbers = - /// ExemplarCharacters::try_new_numbers(&locale!("en").into()) - /// .expect("locale should be present"); - /// - /// assert!(exemplars_numbers.contains('0')); - /// assert!(exemplars_numbers.contains('9')); - /// assert!(exemplars_numbers.contains('%')); - /// assert!(exemplars_numbers.contains(',')); - /// assert!(exemplars_numbers.contains('.')); - /// assert!(!exemplars_numbers.contains('!')); - /// assert!(!exemplars_numbers.contains('?')); - /// ``` - pub fn try_new_numbers(); -); - -make_exemplar_chars_unicode_set_property!( - dyn_data_marker: ExemplarCharactersIndex; - data_marker: LocaleExemplarCharactersIndexV1; - func: - pub fn try_new_index_unstable(); - - /// Get the "index" set of exemplar characters. - /// - /// ✨ *Enabled with the `compiled_data` Cargo feature.* - /// - /// [📚 Help choosing a constructor](icu_provider::constructors) - /// - /// # Examples - /// - /// ``` - /// use icu::locale::locale; - /// use icu::locale::exemplar_chars::ExemplarCharacters; - /// - /// let exemplars_index = - /// ExemplarCharacters::try_new_index(&locale!("en").into()) - /// .expect("locale should be present"); - /// - /// assert!(!exemplars_index.contains('a')); - /// assert!(!exemplars_index.contains('z')); - /// assert!(!exemplars_index.contains_str("a")); - /// assert!(!exemplars_index.contains_str("ä")); - /// assert!(!exemplars_index.contains_str("ng")); - /// assert!(exemplars_index.contains_str("A")); - /// ``` - pub fn try_new_index(); -); diff --git a/deps/crates/vendor/icu_locale-v2/src/expander.rs b/deps/crates/vendor/icu_locale-v2/src/expander.rs deleted file mode 100644 index 6b921b44fecb..000000000000 --- a/deps/crates/vendor/icu_locale-v2/src/expander.rs +++ /dev/null @@ -1,606 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use crate::provider::*; - -use icu_locale_core::subtags::{Language, Region, Script}; -use icu_locale_core::LanguageIdentifier; -use icu_provider::prelude::*; - -use crate::TransformResult; - -/// Implements the *Add Likely Subtags* and *Remove Likely Subtags* -/// algorithms as defined in *[UTS #35: Likely Subtags]*. -/// -/// # Examples -/// -/// Add likely subtags: -/// -/// ``` -/// use icu::locale::locale; -/// use icu::locale::{LocaleExpander, TransformResult}; -/// -/// let lc = LocaleExpander::new_common(); -/// -/// let mut locale = locale!("zh-CN"); -/// assert_eq!(lc.maximize(&mut locale.id), TransformResult::Modified); -/// assert_eq!(locale, locale!("zh-Hans-CN")); -/// -/// let mut locale = locale!("zh-Hant-TW"); -/// assert_eq!(lc.maximize(&mut locale.id), TransformResult::Unmodified); -/// assert_eq!(locale, locale!("zh-Hant-TW")); -/// ``` -/// -/// Remove likely subtags: -/// -/// ``` -/// use icu::locale::{locale, LocaleExpander, TransformResult}; -/// -/// let lc = LocaleExpander::new_common(); -/// -/// let mut locale = locale!("zh-Hans-CN"); -/// assert_eq!(lc.minimize(&mut locale.id), TransformResult::Modified); -/// assert_eq!(locale, locale!("zh")); -/// -/// let mut locale = locale!("zh"); -/// assert_eq!(lc.minimize(&mut locale.id), TransformResult::Unmodified); -/// assert_eq!(locale, locale!("zh")); -/// ``` -/// -/// Normally, only CLDR locales with Basic or higher coverage are included. To include more -/// locales for maximization, use [`try_new_extended`](Self::try_new_extended_unstable): -/// -/// ``` -/// use icu::locale::{locale, LocaleExpander, TransformResult}; -/// -/// let lc = LocaleExpander::new_extended(); -/// -/// let mut locale = locale!("atj"); -/// assert_eq!(lc.maximize(&mut locale.id), TransformResult::Modified); -/// assert_eq!(locale, locale!("atj-Latn-CA")); -/// ``` -/// -/// [UTS #35: Likely Subtags]: https://www.unicode.org/reports/tr35/#Likely_Subtags -#[derive(Debug, Clone)] -pub struct LocaleExpander { - likely_subtags_l: DataPayload, - likely_subtags_sr: DataPayload, - likely_subtags_ext: Option>, -} - -struct LocaleExpanderBorrowed<'a> { - likely_subtags_l: &'a LikelySubtagsForLanguage<'a>, - likely_subtags_sr: &'a LikelySubtagsForScriptRegion<'a>, - likely_subtags_ext: Option<&'a LikelySubtagsExtended<'a>>, -} - -impl LocaleExpanderBorrowed<'_> { - fn get_l(&self, l: Language) -> Option<(Script, Region)> { - let key = &l.to_tinystr().to_unvalidated(); - self.likely_subtags_l.language.get_copied(key).or_else(|| { - self.likely_subtags_ext - .and_then(|ext| ext.language.get_copied(key)) - }) - } - - fn get_ls(&self, l: Language, s: Script) -> Option { - let key = &( - l.to_tinystr().to_unvalidated(), - s.to_tinystr().to_unvalidated(), - ); - self.likely_subtags_l - .language_script - .get_copied(key) - .or_else(|| { - self.likely_subtags_ext - .and_then(|ext| ext.language_script.get_copied(key)) - }) - } - - fn get_lr(&self, l: Language, r: Region) -> Option